         Edinburgh IMP77 Compiler - Version 8.4
    1 %realslong
		.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	.LC8@GOTOFF(%eax)
				fucomip	%st(1), %st
				fstp	%st(0)
				jp	.L2
				fldl	-24(%ebp)
				fldl	.LC8@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:
		COT.6063:
		.LFB190:
    2
    3 %begin
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				pushl	%ecx
				subl	$7496, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -7500(%ebp)
				movl	%gs:20, %esi
				movl	%esi, -28(%ebp)
				xorl	%esi, %esi
				leal	8(%ebp), %edx
				movl	%edx, -40(%ebp)
				subl	$8, %esp
				pushl	-7500(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
    4     %integer a line, b line, c line, d line,
    5              e line, f line, g prime line,
    6              h line
    7     %real %array spectral line(1:8)
				leal	-7180(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-320(%ebp), %eax
				movl	%eax, -7180(%ebp)
				movl	$8, -7176(%ebp)
    8     %integer current surfaces
    9     %real %array test case(1:4, 1:4)
				leal	-7112(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-320(%ebp), %eax
				addl	$64, %eax
				movl	%eax, -7112(%ebp)
				movl	$8, -7108(%ebp)
   10     %integer curvature radius, index of refraction, dispersion,
   11         edge thickness
   12
   13     %real clear aperture, aberr lspher, aberr osc, aberr lchrom,
   14          max lspher, max osc, max lchrom, radius of curvature,
   15          object distance, ray height, axis slope angle,
   16          from index, to index
   17     %integer number of iterations, iteration
   18     %integer paraxial, marginal ray, paraxial ray
   19     %integer od field, sa field
   20     %real %array od sa(1:2, 1:2)
				leal	-7044(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-7216(%ebp), %eax
				movl	%eax, -7044(%ebp)
				movl	$8, -7040(%ebp)
   21     %real od cline, od fline
   22     %real %fn cot(%real x)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%ebx
				subl	$52, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	8(%ebp), %eax
				movl	%eax, -32(%ebp)
				movl	12(%ebp), %eax
				movl	%eax, -28(%ebp)
				movl	%ecx, -36(%ebp)
				fldl	-32(%ebp)
				fstpl	-16(%ebp)
		.LBB96:
		.LBB97:
				subl	$8, %esp
				pushl	-12(%ebp)
				pushl	-16(%ebp)
				call	sin@PLT
				addl	$16, %esp
				fstpl	-48(%ebp)
				fldl	-32(%ebp)
				fstpl	-24(%ebp)
		.LBE97:
		.LBE96:
		.LBB98:
		.LBB99:
				subl	$8, %esp
				pushl	-20(%ebp)
				pushl	-24(%ebp)
				call	cos@PLT
				addl	$16, %esp
		.LBE99:
		.LBE98:
   23         %result = 1.0 / (sin(x) / cos(x))
				fdivrl	-48(%ebp)
				fld1
				fdivp	%st, %st(1)
   24     %end {cot}
				movl	-4(%ebp), %ebx
				leave
				ret
		.LFE190:
				.section	.rodata
				.align 4
		.LC30:
				.string	"Illegal cycle ITERATION = 1, 1, NUMBEROFITERATIONS"
				.align 4
		.LC31:
				.string	"Illegal cycle PARAXIAL = MARGINALRAY, 1, PARAXIALRAY"
				.align 32
		.LC0:
				.byte	18
				.string	"test-in/fbench.imp"
				.zero	236
				.align 32
		.LC1:
				.byte	18
				.string	"  Marginal ray    "
				.zero	236
				.align 32
		.LC2:
				.byte	3
				.string	"   "
				.zero	251
				.align 32
		.LC3:
				.byte	18
				.string	"  Paraxial ray    "
				.zero	236
				.align 32
		.LC4:
				.byte	35
				.string	"Longitudinal spherical aberration: "
				.zero	219
				.align 32
		.LC5:
				.byte	27
				.string	"    (Maximum permissible): "
				.zero	227
				.align 32
		.LC6:
				.byte	39
				.string	"Offense against sine condition (coma): "
				.zero	215
				.align 32
		.LC7:
				.byte	28
				.string	"Axial chromatic aberration: "
				.zero	226
				.globl	main
		main:
		.LFB189:
   25     %real %fn arc sin(%real x)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%ebx
				subl	$36, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	8(%ebp), %eax
				movl	%eax, -32(%ebp)
				movl	12(%ebp), %eax
				movl	%eax, -28(%ebp)
				movl	%ecx, -36(%ebp)
   26         %result = 2 * arc tan1(x / (1 + sqrt(1 - x^2)))
				fldl	.LC8@GOTOFF(%ebx)
				leal	-8(%esp), %esp
				fstpl	(%esp)
				pushl	-28(%ebp)
				pushl	-32(%ebp)
				call	_imp_REXP
				addl	$16, %esp
				fld1
				fsubp	%st, %st(1)
				fstpl	-16(%ebp)
		.LBB174:
		.LBB175:
				subl	$8, %esp
				pushl	-12(%ebp)
				pushl	-16(%ebp)
				call	sqrt@PLT
				addl	$16, %esp
		.LBE175:
		.LBE174:
				fld1
				faddp	%st, %st(1)
				fldl	-32(%ebp)
				fdivp	%st, %st(1)
				fstpl	-24(%ebp)
		.LBB176:
		.LBB177:
				subl	$8, %esp
				pushl	-20(%ebp)
				pushl	-24(%ebp)
				call	atan@PLT
				addl	$16, %esp
		.LBE177:
		.LBE176:
				fadd	%st(0), %st
   27     %end {arc sin}
				movl	-4(%ebp), %ebx
				leave
				ret
		.LFE191:
		OUTBIGREAL.6070:
		.LFB192:
   28     %routine out big real(%integer channel, %real x)
				pushl	%ebp
				movl	%esp, %ebp
				subl	$32, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	12(%ebp), %eax
				movl	%eax, -24(%ebp)
				movl	16(%ebp), %eax
				movl	%eax, -20(%ebp)
				movl	%ecx, -28(%ebp)
   29         %real fraction
   30         fraction = x
				fldl	-24(%ebp)
				fstpl	-8(%ebp)
   31     %end {out big real}
				nop
				leave
				ret
		.LFE192:
		TRANSITSURFACE.6074:
		.LFB193:
?CHANNEL unused
   32     %routine transit surface
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%esi
				pushl	%ebx
				subl	$112, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %esi
				movl	%ecx, -108(%ebp)
   33         %real iang, rang, iang sin, rang sin,
   34               old axis slope angle, sagitta
   35         %if paraxial = paraxial ray %then %start
				movl	276(%esi), %edx
				movl	272(%esi), %eax
				cmpl	%eax, %edx
				jne	.L72
				nop
		.L43:
   36             %if radius of curvature # 0 %then %start
				fldl	232(%esi)
				fldz
				fucomip	%st(1), %st
				jp	.L78
				fldz
				fucomip	%st(1), %st
				fstp	%st(0)
				je	.L73
				jmp	.L44
		.L78:
				fstp	%st(0)
		.L44:
				nop
		.L46:
   37                 %if object distance = 0 %then %start
				fldl	224(%esi)
				fldz
				fucomip	%st(1), %st
				jp	.L79
				fldz
				fucomip	%st(1), %st
				fstp	%st(0)
				jne	.L74
				nop
		.L49:
   38                     axis slope angle = 0
				fldz
				fstpl	216(%esi)
   39                     iang sin = ray height / radius of curvature
				fldl	208(%esi)
				fldl	232(%esi)
				fdivrp	%st, %st(1)
				fstpl	-104(%ebp)
   40                 %finish %else                                         %c
   41                     iang sin = ((object distance -                    %c
				jmp	.L50
		.L79:
				fstp	%st(0)
		.L74:
				fldl	224(%esi)
				fldl	232(%esi)
				fsubrp	%st, %st(1)
				fldl	232(%esi)
				fdivrp	%st, %st(1)
				fldl	216(%esi)
				fmulp	%st, %st(1)
				fstpl	-104(%ebp)
		.L50:
   42                         radius of curvature) / radius of curvature) * %c
   43                         axis slope angle
   44                 rang sin = (from index / to index) * iang sin
				fldl	200(%esi)
				fldl	192(%esi)
				fdivrp	%st, %st(1)
				fldl	-104(%ebp)
				fmulp	%st, %st(1)
				fstpl	-96(%ebp)
   45                 old axis slope angle = axis slope angle
				fldl	216(%esi)
				fstpl	-88(%ebp)
   46                 axis slope angle = axis slope angle +                 %c
				fldl	216(%esi)
				faddl	-104(%ebp)
				fsubl	-96(%ebp)
				fstpl	216(%esi)
   47                     iang sin - rang sin
   48                 %if object distance # 0 %then                         %c
				fldl	224(%esi)
				fldz
				fucomip	%st(1), %st
				jp	.L80
				fldz
				fucomip	%st(1), %st
				fstp	%st(0)
				je	.L75
				jmp	.L51
		.L80:
				fstp	%st(0)
		.L51:
				fldl	224(%esi)
				fmull	-88(%ebp)
				fstpl	208(%esi)
				jmp	.L53
		.L75:
				nop
		.L53:
   49                     ray height = object distance * old axis slope angle
   50                 object distance = ray height / axis slope angle
				fldl	208(%esi)
				fldl	216(%esi)
				fdivrp	%st, %st(1)
				fstpl	224(%esi)
   51             %else
				nop
		.L54:
   52                 object distance = object distance * (to index / from index)
				fldl	192(%esi)
				fldl	200(%esi)
				fdivrp	%st, %st(1)
				fldl	224(%esi)
				fmulp	%st, %st(1)
				fstpl	224(%esi)
   53                 axis slope angle = axis slope angle * (from index / to index)
				fldl	200(%esi)
				fldl	192(%esi)
				fdivrp	%st, %st(1)
				fldl	216(%esi)
				fmulp	%st, %st(1)
				fstpl	216(%esi)
   54             %finish
   55         %else
				jmp	.L69
		.L73:
				jmp	.L69
		.L72:
   56             %if radius of curvature # 0 %then %start
				fldl	232(%esi)
				fldz
				fucomip	%st(1), %st
				jp	.L81
				fldz
				fucomip	%st(1), %st
				fstp	%st(0)
				je	.L76
				jmp	.L56
		.L81:
				fstp	%st(0)
		.L56:
				nop
		.L58:
   57                 %if object distance = 0 %then %start
				fldl	224(%esi)
				fldz
				fucomip	%st(1), %st
				jp	.L82
				fldz
				fucomip	%st(1), %st
				fstp	%st(0)
				jne	.L77
				nop
		.L61:
   58                     axis slope angle = 0
				fldz
				fstpl	216(%esi)
   59                     iang sin = ray height / radius of curvature
				fldl	208(%esi)
				fldl	232(%esi)
				fdivrp	%st, %st(1)
				fstpl	-104(%ebp)
   60                 %finish %else %c
   61                     iang sin = ((object distance -                    %c
				jmp	.L62
		.L82:
				fstp	%st(0)
		.L77:
				fldl	224(%esi)
				fldl	232(%esi)
				fsubrp	%st, %st(1)
				fldl	232(%esi)
				fdivrp	%st, %st(1)
				fstpl	-120(%ebp)
				fldl	216(%esi)
				fstpl	-56(%ebp)
		.LBB178:
		.LBB179:
				subl	$8, %esp
				pushl	-52(%ebp)
				pushl	-56(%ebp)
				call	sin@PLT
				addl	$16, %esp
		.LBE179:
		.LBE178:
				fmull	-120(%ebp)
				fstpl	-104(%ebp)
		.L62:
   62                         radius of curvature) / radius of curvature) * %c
   63                         sin(axis slope angle)
   64                 iang = arc sin(iang sin)
				subl	$8, %esp
				pushl	-100(%ebp)
				pushl	-104(%ebp)
				movl	%esi, %ecx
				call	ARCSIN.6066
				addl	$16, %esp
				fstpl	-80(%ebp)
   65                 rang sin = (from index / to index) * iang sin
				fldl	200(%esi)
				fldl	192(%esi)
				fdivrp	%st, %st(1)
				fldl	-104(%ebp)
				fmulp	%st, %st(1)
				fstpl	-96(%ebp)
   66                 old axis slope angle = axis slope angle
				fldl	216(%esi)
				fstpl	-88(%ebp)
   67                 axis slope angle = axis slope angle +                 %c
				fldl	216(%esi)
				faddl	-80(%ebp)
				fstpl	-120(%ebp)
				subl	$8, %esp
				pushl	-92(%ebp)
				pushl	-96(%ebp)
				movl	%esi, %ecx
				call	ARCSIN.6066
				addl	$16, %esp
				fsubrl	-120(%ebp)
				fstpl	216(%esi)
   68                     iang - arcsin(rang sin)
   69
   70 ! for some reason imp2021 likes this but not the original!:
   71 sagitta = 2 * radius of curvature * (sin((old axis slope angle + iang) / 2) ^ 2)
				fldl	232(%esi)
				fadd	%st(0), %st
				fstpl	-120(%ebp)
				fldl	-88(%ebp)
				faddl	-80(%ebp)
				fldl	.LC8@GOTOFF(%ebx)
				fdivrp	%st, %st(1)
				fstpl	-40(%ebp)
		.LBB180:
		.LBB181:
				subl	$8, %esp
				pushl	-36(%ebp)
				pushl	-40(%ebp)
				call	sin@PLT
				addl	$16, %esp
		.LBE181:
		.LBE180:
				fldl	.LC8@GOTOFF(%ebx)
				leal	-8(%esp), %esp
				fstpl	(%esp)
				leal	-8(%esp), %esp
				fstpl	(%esp)
				call	_imp_REXP
				addl	$16, %esp
				fmull	-120(%ebp)
				fstpl	-72(%ebp)
   72
   73 !                sagitta = sin((old axis slope angle + iang) / 2)
   74 !                sagitta = 2 * radius of curvature * (sagitta ^ 2)
   75 !%comment                 sagitta = sin((old axis slope angle + iang) / 2)
   76 !%comment                 sagitta = 2 * radius of curvature * (sagitta ^ 2)
   77
   78
   79 object distance = ((radius of curvature *             %c
				fldl	-88(%ebp)
				faddl	-80(%ebp)
				fstpl	-48(%ebp)
		.LBB182:
		.LBB183:
				subl	$8, %esp
				pushl	-44(%ebp)
				pushl	-48(%ebp)
				call	sin@PLT
				addl	$16, %esp
		.LBE183:
		.LBE182:
				fldl	232(%esi)
				fmulp	%st, %st(1)
				fstpl	-120(%ebp)
				fldl	216(%esi)
				subl	$8, %esp
				leal	-8(%esp), %esp
				fstpl	(%esp)
				movl	%esi, %ecx
				call	COT.6063
				addl	$16, %esp
				fmull	-120(%ebp)
				faddl	-72(%ebp)
				fstpl	224(%esi)
   80                     sin(old axis slope angle + iang)) *               %c
   81                     cot(axis slope angle)) + sagitta
   82             %else
				jmp	.L69
		.L76:
   83                 rang = -arcsin((from index / to index) *              %c
				fldl	200(%esi)
				fldl	192(%esi)
				fdivrp	%st, %st(1)
				fstpl	-120(%ebp)
				fldl	216(%esi)
				fstpl	-16(%ebp)
		.LBB184:
		.LBB185:
				subl	$8, %esp
				pushl	-12(%ebp)
				pushl	-16(%ebp)
				call	sin@PLT
				addl	$16, %esp
		.LBE185:
		.LBE184:
				fmull	-120(%ebp)
				subl	$8, %esp
				leal	-8(%esp), %esp
				fstpl	(%esp)
				movl	%esi, %ecx
				call	ARCSIN.6066
				addl	$16, %esp
				fchs
				fstpl	-64(%ebp)
   84                     sin(axis slope angle))
   85                 object distance = object distance * ((to index *      %c
				fldl	-64(%ebp)
				fchs
				fstpl	-24(%ebp)
		.LBB186:
		.LBB187:
				subl	$8, %esp
				pushl	-20(%ebp)
				pushl	-24(%ebp)
				call	cos@PLT
				addl	$16, %esp
		.LBE187:
		.LBE186:
				fldl	192(%esi)
				fmulp	%st, %st(1)
				fstpl	-120(%ebp)
				fldl	216(%esi)
				fstpl	-32(%ebp)
		.LBB188:
		.LBB189:
				subl	$8, %esp
				pushl	-28(%ebp)
				pushl	-32(%ebp)
				call	cos@PLT
				addl	$16, %esp
		.LBE189:
		.LBE188:
				fldl	200(%esi)
				fmulp	%st, %st(1)
				fdivrl	-120(%ebp)
				fldl	224(%esi)
				fmulp	%st, %st(1)
				fstpl	224(%esi)
   86                     cos(-rang)) / (from index *                       %c
   87                     cos(axis slope angle)))
   88                 axis slope angle = -rang
				fldl	-64(%ebp)
				fchs
				fstpl	216(%esi)
		.L55:
		.L69:
   89             %finish
   90         %finish
   91     %end {transit surface}
				nop
				leal	-8(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%ebp
				ret
		.LFE193:
				.section	.rodata
				.align 4
		.LC34:
				.string	"Illegal cycle I = 1, 1, CURRENTSURFACES"
		TRACELINE.6095:
		.LFB194:
   92     %routine trace line(%integer line, %real ray h)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				subl	$828, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	12(%ebp), %eax
				movl	%eax, -816(%ebp)
				movl	16(%ebp), %eax
				movl	%eax, -812(%ebp)
				movl	%ecx, %eax
				movl	%eax, -824(%ebp)
				movl	%ecx, -820(%ebp)
				movl	%gs:20, %ecx
				movl	%ecx, -28(%ebp)
				xorl	%ecx, %ecx
   93         %integer i
   94         object distance = 0
				fldz
				fstpl	224(%eax)
   95         ray height = ray h
				fldl	-816(%ebp)
				fstpl	208(%eax)
   96         from index = 1
				fld1
				fstpl	200(%eax)
		.LBB190:
   97         %for i = 1, 1, current surfaces %cycle
				movl	268(%eax), %eax
				movl	%eax, -804(%ebp)
		.LBB191:
				movl	-804(%ebp), %eax
				subl	$1, %eax
				movl	%eax, -800(%ebp)
				movl	-800(%ebp), %eax
				xorl	$1, %eax
				shrl	$31, %eax
				movzbl	%al, %eax
		.LBE191:
				testl	%eax, %eax
				je	.L84
				leal	-540(%ebp), %eax
				subl	$8, %esp
				leal	.LC34@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	.L85
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				movl	%eax, -828(%ebp)
				jmp	.L86
		.L85:
				movl	$97, -828(%ebp)
		.L86:
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L87
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %edx
				leal	-284(%ebp), %eax
				subl	$8, %esp
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				jmp	.L88
		.L87:
		.LBB192:
				leal	-284(%ebp), %eax
				leal	.LC0@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-796(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE192:
				leal	-284(%ebp), %eax
				leal	-796(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.L88:
				pushl	$0
				pushl	$1
				pushl	$5
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				pushl	-828(%ebp)
				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	_signal_event@PLT
				addl	$528, %esp
		.L84:
				movl	$0, -808(%ebp)
		.L89:
				movl	-808(%ebp), %eax
				cmpl	-804(%ebp), %eax
				je	.L100
				addl	$1, -808(%ebp)
				nop
		.L91:
		.LBE190:
   98             radius of curvature = test case(i, curvature radius)
				movl	-808(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-824(%ebp), %edi
				movl	264(%edi), %eax
				subl	$1, %eax
				sall	$2, %edx
				addl	%edx, %eax
				addl	$8, %eax
				fldl	(%edi,%eax,8)
				fstpl	232(%edi)
   99             to index = test case(i, index of refraction)
				movl	-808(%ebp), %eax
				leal	-1(%eax), %edx
				movl	260(%edi), %eax
				subl	$1, %eax
				sall	$2, %edx
				addl	%edx, %eax
				addl	$8, %eax
				fldl	(%edi,%eax,8)
				fstpl	192(%edi)
  100             %if to index > 1 %then                                     %c
				fldl	192(%edi)
				fld1
				fucomip	%st(1), %st
				fstp	%st(0)
				jnb	.L101
				movl	-824(%ebp), %esi
				movl	256(%esi), %eax
				subl	$1, %eax
				fldl	(%esi,%eax,8)
				movl	8(%ebp), %eax
				subl	$1, %eax
				fldl	(%esi,%eax,8)
				fsubrp	%st, %st(1)
				movl	252(%esi), %eax
				subl	$1, %eax
				fldl	(%esi,%eax,8)
				movl	248(%esi), %eax
				subl	$1, %eax
				fldl	(%esi,%eax,8)
				fsubrp	%st, %st(1)
				fdivrp	%st, %st(1)
				movl	-808(%ebp), %eax
				leal	-1(%eax), %edx
				movl	260(%esi), %eax
				subl	$1, %eax
				sall	$2, %edx
				addl	%edx, %eax
				addl	$8, %eax
				fldl	(%esi,%eax,8)
				fld1
				fsubrp	%st, %st(1)
				movl	-808(%ebp), %eax
				leal	-1(%eax), %edx
				movl	244(%esi), %eax
				subl	$1, %eax
				sall	$2, %edx
				addl	%edx, %eax
				addl	$8, %eax
				fldl	(%esi,%eax,8)
				fdivrp	%st, %st(1)
				fmulp	%st, %st(1)
				fldl	192(%esi)
				faddp	%st, %st(1)
				fstpl	192(%esi)
				jmp	.L94
		.L101:
				nop
		.L94:
  101                 to index = to index + ((spectral line(d line) -        %c
  102                     spectral line(line)) /                             %c
  103                     (spectral line(c line) - spectral line(f line))) * %c
  104                     ((test case(i, index of refraction) - 1.0) /       %c
  105                     test case(i, dispersion))
  106             transit surface
				movl	-824(%ebp), %edi
				movl	%edi, %ecx
				call	TRANSITSURFACE.6074
  107             from index = to index
				movl	%edi, %eax
				fldl	192(%eax)
				movl	%edi, %eax
				fstpl	200(%eax)
  108             %if i < current surfaces %then                             %c
				movl	268(%eax), %eax
				cmpl	%eax, -808(%ebp)
				jge	.L102
				movl	-808(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-824(%ebp), %ecx
				movl	240(%ecx), %eax
				subl	$1, %eax
				sall	$2, %edx
				addl	%edx, %eax
				addl	$8, %eax
				fldl	(%ecx,%eax,8)
				fldl	224(%ecx)
				fsubp	%st, %st(1)
				fstpl	224(%ecx)
				jmp	.L89
		.L102:
				nop
		.L96:
  109                 object distance = object distance -                    %c
  110                     test case(i, edge thickness)
  111         %repeat
				jmp	.L89
		.L100:
  112     %end {trace line}
				nop
				movl	-28(%ebp), %eax
				xorl	%gs:20, %eax
				je	.L98
				call	__stack_chk_fail_local
		.L98:
				leal	-12(%ebp), %esp
				popl	%ebx
				popl	%esi
				popl	%edi
				popl	%ebp
				ret
		.LFE194:
				.section	.rodata
				.align 8
		.LC8:
				.long	0
				.long	1073741824
				.align 8
		.LC10:
				.long	0
				.long	1086178560
				.align 8
		.LC11:
				.long	2061584302
				.long	1085986292
				.align 8
		.LC12:
				.long	-446676599
				.long	1085907664
				.align 8
		.LC13:
				.long	-1443109011
				.long	1085736945
				.align 8
		.LC14:
				.long	-1752346657
				.long	1085576590
				.align 8
		.LC15:
				.long	274877907
				.long	1085472088
				.align 8
		.LC16:
				.long	481036337
				.long	1085338746
				.align 8
		.LC17:
				.long	-309237645
				.long	1085210876
				.align 8
		.LC18:
				.long	-858993459
				.long	1077611724
				.align 8
		.LC19:
				.long	2109687936
				.long	1073231901
				.align 8
		.LC20:
				.long	-858993459
				.long	1078971596
				.align 8
		.LC21:
				.long	171798692
				.long	1071686615
				.align 8
		.LC22:
				.long	2061584302
				.long	-1070551532
				.align 8
		.LC24:
				.long	-412316860
				.long	1069656571
				.align 8
		.LC25:
				.long	1058279942
				.long	1073339590
				.align 8
		.LC26:
				.long	-1717986918
				.long	1078090137
				.align 8
		.LC27:
				.long	-2061584302
				.long	1071141355
				.align 8
		.LC28:
				.long	1717986918
				.long	-1068267930
				.align 8
		.LC29:
				.long	0
				.long	1074790400
				.align 8
		.LC32:
				.long	-487743358
				.long	1058555463
				.align 8
		.LC33:
				.long	1202590843
				.long	1063549665
				.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:
		.LFB195:
				movl	(%esp), %eax
				ret
		.LFE195:
				.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:
		.LFB196:
				movl	(%esp), %ebx
				ret
		.LFE196:
		.Letext0:
  113     %comment END GLOBAL DECLARATONS
  114     %comment Spectral lines
  115     a line = 1; b line = 2; c line = 3; d line = 4
				movl	$1, -7492(%ebp)
				movl	$2, -7488(%ebp)
				movl	$3, %eax
				movl	%eax, -68(%ebp)
				movl	$4, %eax
				movl	%eax, -64(%ebp)
  116         e line = 5; f line = 6; g prime line = 7
				movl	$5, -7484(%ebp)
				movl	$6, %eax
				movl	%eax, -72(%ebp)
				movl	$7, -7480(%ebp)
  117         h line = 8
				movl	$8, -7476(%ebp)
  118     spectral line(a line)       = 7621.0
				movl	-7492(%ebp), %eax
				subl	$1, %eax
				fldl	.LC10@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  119     spectral line(b line)       = 6869.955
				movl	-7488(%ebp), %eax
				subl	$1, %eax
				fldl	.LC11@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  120     spectral line(c line)       = 6562.8160
				movl	-68(%ebp), %eax
				subl	$1, %eax
				fldl	.LC12@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  121     spectral line(d line)       = 5895.944
				movl	-64(%ebp), %eax
				subl	$1, %eax
				fldl	.LC13@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  122     spectral line(e line)       = 5269.557
				movl	-7484(%ebp), %eax
				subl	$1, %eax
				fldl	.LC14@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  123     spectral line(f line)       = 4861.344
				movl	-72(%ebp), %eax
				subl	$1, %eax
				fldl	.LC15@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  124     spectral line(g prime line) = 4340.477
				movl	-7480(%ebp), %eax
				subl	$1, %eax
				fldl	.LC16@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  125     spectral line(h line)       = 3968.494
				movl	-7476(%ebp), %eax
				subl	$1, %eax
				fldl	.LC17@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  126     %comment  Initialise the test case array
  127     current surfaces = 4
				movl	$4, %eax
				movl	%eax, -52(%ebp)
  128     curvature radius = 1; index of refraction = 2; dispersion = 3
				movl	$1, %eax
				movl	%eax, -56(%ebp)
				movl	$2, %eax
				movl	%eax, -60(%ebp)
				movl	$3, %eax
				movl	%eax, -76(%ebp)
  129         edge thickness = 4
				movl	$4, %eax
				movl	%eax, -80(%ebp)
  130     test case(1, curvature radius)    =   27.05
				movl	-56(%ebp), %eax
				subl	$1, %eax
				addl	$8, %eax
				fldl	.LC18@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  131     test case(1, index of refraction) =    1.5137
				movl	-60(%ebp), %eax
				subl	$1, %eax
				addl	$8, %eax
				fldl	.LC19@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  132     test case(1, dispersion)          =   63.6
				movl	-76(%ebp), %eax
				subl	$1, %eax
				addl	$8, %eax
				fldl	.LC20@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  133     test case(1, edge thickness)      =    0.52
				movl	-80(%ebp), %eax
				subl	$1, %eax
				addl	$8, %eax
				fldl	.LC21@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  134     test case(2, curvature radius)    =  -16.68
				movl	-56(%ebp), %eax
				subl	$1, %eax
				addl	$12, %eax
				fldl	.LC22@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  135     test case(2, index of refraction) =    1.0
				movl	-60(%ebp), %eax
				subl	$1, %eax
				addl	$12, %eax
				fld1
				fstpl	-320(%ebp,%eax,8)
  136     test case(2, dispersion)          =    0.0
				movl	-76(%ebp), %eax
				subl	$1, %eax
				addl	$12, %eax
				fldz
				fstpl	-320(%ebp,%eax,8)
  137     test case(2, edge thickness)      =    0.138
				movl	-80(%ebp), %eax
				subl	$1, %eax
				addl	$12, %eax
				fldl	.LC24@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  138     test case(3, curvature radius)    =  -16.68
				movl	-56(%ebp), %eax
				subl	$1, %eax
				addl	$16, %eax
				fldl	.LC22@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  139     test case(3, index of refraction) =    1.6164
				movl	-60(%ebp), %eax
				subl	$1, %eax
				addl	$16, %eax
				fldl	.LC25@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  140     test case(3, dispersion)          =   36.7
				movl	-76(%ebp), %eax
				subl	$1, %eax
				addl	$16, %eax
				fldl	.LC26@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  141     test case(3, edge thickness)      =    0.38
				movl	-80(%ebp), %eax
				subl	$1, %eax
				addl	$16, %eax
				fldl	.LC27@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  142     test case(4, curvature radius)    =  -78.1
				movl	-56(%ebp), %eax
				subl	$1, %eax
				addl	$20, %eax
				fldl	.LC28@GOTOFF(%ebx)
				fstpl	-320(%ebp,%eax,8)
  143     test case(4, index of refraction) =    1.0
				movl	-60(%ebp), %eax
				subl	$1, %eax
				addl	$20, %eax
				fld1
				fstpl	-320(%ebp,%eax,8)
  144     test case(4, dispersion)          =    0.0
				movl	-76(%ebp), %eax
				subl	$1, %eax
				addl	$20, %eax
				fldz
				fstpl	-320(%ebp,%eax,8)
  145     test case(4, edge thickness)      =    0.0
				movl	-80(%ebp), %eax
				subl	$1, %eax
				addl	$20, %eax
				fldz
				fstpl	-320(%ebp,%eax,8)
  146     marginal ray = 1; paraxial ray = 2
				movl	$1, -7472(%ebp)
				movl	$2, %eax
				movl	%eax, -48(%ebp)
  147     od field = 1; sa field = 2
				movl	$1, -7468(%ebp)
				movl	$2, -7464(%ebp)
  148     %comment  number of iterations = 40263820;
  149     number of iterations = 1
				movl	$1, -7460(%ebp)
  150     clear aperture = 4
				fldl	.LC29@GOTOFF(%ebx)
				fstpl	-7320(%ebp)
		.LBB100:
  151     %for iteration = 1, 1, number of iterations %cycle
				movl	-7460(%ebp), %eax
				movl	%eax, -7456(%ebp)
		.LBB101:
				movl	-7456(%ebp), %eax
				subl	$1, %eax
				movl	%eax, -7452(%ebp)
				movl	-7452(%ebp), %eax
				xorl	$1, %eax
				shrl	$31, %eax
				movzbl	%al, %eax
		.LBE101:
				testl	%eax, %eax
				je	.L12
				leal	-3904(%ebp), %eax
				subl	$8, %esp
				leal	.LC30@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	.L13
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				movl	%eax, -7512(%ebp)
				jmp	.L14
		.L13:
				movl	$151, -7512(%ebp)
		.L14:
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L15
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %edx
				leal	-3648(%ebp), %eax
				subl	$8, %esp
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				jmp	.L16
		.L15:
		.LBB102:
				leal	-576(%ebp), %eax
				leal	.LC0@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6976(%ebp), %eax
				leal	-576(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE102:
				leal	-3648(%ebp), %eax
				leal	-6976(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.L16:
				pushl	$0
				pushl	$1
				pushl	$5
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-3904(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				pushl	-7512(%ebp)
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-3648(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_signal_event@PLT
				addl	$528, %esp
		.L12:
				movl	$0, -7496(%ebp)
		.L17:
				movl	-7496(%ebp), %eax
				cmpl	-7456(%ebp), %eax
				je	.L33
				addl	$1, -7496(%ebp)
		.LBB103:
				nop
		.L19:
		.LBE100:
		.LBB110:
  152         %for paraxial = marginal ray, 1, paraxial ray %cycle
				movl	-7472(%ebp), %eax
				movl	%eax, -7448(%ebp)
				movl	-48(%ebp), %eax
				movl	%eax, -7444(%ebp)
		.LBB104:
				movl	-7444(%ebp), %eax
				subl	-7448(%ebp), %eax
				movl	%eax, -7440(%ebp)
				movl	-7440(%ebp), %eax
				xorl	$1, %eax
				shrl	$31, %eax
				movzbl	%al, %eax
		.LBE104:
				testl	%eax, %eax
				je	.L20
				leal	-3392(%ebp), %eax
				subl	$8, %esp
				leal	.LC31@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	.L21
				movl	_imp_current_line@GOT(%ebx), %eax
				movl	(%eax), %eax
				movl	%eax, -7512(%ebp)
				jmp	.L22
		.L21:
				movl	$152, -7512(%ebp)
		.L22:
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %eax
				testl	%eax, %eax
				je	.L23
				movl	_imp_current_file@GOT(%ebx), %eax
				movl	(%eax), %edx
				leal	-3136(%ebp), %eax
				subl	$8, %esp
				pushl	%edx
				pushl	%eax
				call	_imp_c2istr@PLT
				addl	$12, %esp
				jmp	.L24
		.L23:
		.LBB105:
				leal	-576(%ebp), %eax
				leal	.LC0@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6720(%ebp), %eax
				leal	-576(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE105:
				leal	-3136(%ebp), %eax
				leal	-6720(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.L24:
				pushl	$0
				pushl	$1
				pushl	$5
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-3392(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				pushl	-7512(%ebp)
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-3136(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_signal_event@PLT
				addl	$528, %esp
		.L20:
				movl	-7448(%ebp), %eax
				subl	$1, %eax
				movl	%eax, -44(%ebp)
		.L25:
				movl	-44(%ebp), %eax
				cmpl	-7444(%ebp), %eax
				je	.L34
				movl	-44(%ebp), %eax
				addl	$1, %eax
				movl	%eax, -44(%ebp)
				nop
		.L27:
		.LBE103:
  153             trace line(d line, clear aperture / 2)
				fldl	-7320(%ebp)
				fldl	.LC8@GOTOFF(%ebx)
				fdivrp	%st, %st(1)
				movl	-64(%ebp), %edx
				subl	$4, %esp
				leal	-320(%ebp), %eax
				leal	-8(%esp), %esp
				fstpl	(%esp)
				pushl	%edx
				movl	%eax, %ecx
				call	TRACELINE.6095
				addl	$16, %esp
  154             od sa(paraxial, od field) = object distance
				movl	-44(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7468(%ebp), %eax
				subl	$1, %eax
				fldl	-96(%ebp)
				addl	%edx, %edx
				addl	%edx, %eax
				fstpl	-7216(%ebp,%eax,8)
  155             od sa(paraxial, sa field) = axis slope angle
				movl	-44(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7464(%ebp), %eax
				subl	$1, %eax
				fldl	-104(%ebp)
				addl	%edx, %edx
				addl	%edx, %eax
				fstpl	-7216(%ebp,%eax,8)
  156         %repeat
				jmp	.L25
		.L34:
  157         %comment Trace marginal ray in C
  158         paraxial = marginal ray
				movl	-7472(%ebp), %eax
				movl	%eax, -44(%ebp)
  159         trace line(c line, clear aperture / 2)
				fldl	-7320(%ebp)
				fldl	.LC8@GOTOFF(%ebx)
				fdivrp	%st, %st(1)
				movl	-68(%ebp), %edx
				subl	$4, %esp
				leal	-320(%ebp), %eax
				leal	-8(%esp), %esp
				fstpl	(%esp)
				pushl	%edx
				movl	%eax, %ecx
				call	TRACELINE.6095
				addl	$16, %esp
  160         od cline = object distance
				fldl	-96(%ebp)
				fstpl	-7312(%ebp)
  161         %comment Trace marginal ray in F
  162         trace line(f line, clear aperture / 2)
				fldl	-7320(%ebp)
				fldl	.LC8@GOTOFF(%ebx)
				fdivrp	%st, %st(1)
				movl	-72(%ebp), %edx
				subl	$4, %esp
				leal	-320(%ebp), %eax
				leal	-8(%esp), %esp
				fstpl	(%esp)
				pushl	%edx
				movl	%eax, %ecx
				call	TRACELINE.6095
				addl	$16, %esp
  163         od fline = object distance
				fldl	-96(%ebp)
				fstpl	-7304(%ebp)
  164         aberr lspher = od sa(paraxial ray, od field) -               %c
				movl	-48(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7468(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				movl	-7472(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7468(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				fsubrp	%st, %st(1)
				fstpl	-7368(%ebp)
  165             od sa(marginal ray, od field)
  166         aberr osc = 1 - ((od sa(paraxial ray, od field) *            %c
				movl	-48(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7468(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				movl	-48(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7464(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				fmulp	%st, %st(1)
				fstpl	-7512(%ebp)
				movl	-7472(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7464(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				fstpl	-7288(%ebp)
		.LBB106:
		.LBB107:
				subl	$8, %esp
				pushl	-7284(%ebp)
				pushl	-7288(%ebp)
				call	sin@PLT
				addl	$16, %esp
		.LBE107:
		.LBE106:
				movl	-7472(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7468(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				fmulp	%st, %st(1)
				fdivrl	-7512(%ebp)
				fld1
				fsubp	%st, %st(1)
				fstpl	-7360(%ebp)
  167                           od sa(paraxial ray, sa field)) /           %c
  168                           (sin(od sa(marginal ray, sa field)) *      %c
  169                            od sa(marginal ray, od field)))
  170         aberr lchrom = od fline - od cline
				fldl	-7304(%ebp)
				fsubl	-7312(%ebp)
				fstpl	-7352(%ebp)
  171         max lspher = 0.0000926 / sin(od sa(marginal ray, sa field)) ^ 2
				movl	-7472(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7464(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				fstpl	-7296(%ebp)
		.LBB108:
		.LBB109:
				subl	$8, %esp
				pushl	-7292(%ebp)
				pushl	-7296(%ebp)
				call	sin@PLT
				addl	$16, %esp
		.LBE109:
		.LBE108:
				fldl	.LC8@GOTOFF(%ebx)
				leal	-8(%esp), %esp
				fstpl	(%esp)
				leal	-8(%esp), %esp
				fstpl	(%esp)
				call	_imp_REXP
				addl	$16, %esp
				fldl	.LC32@GOTOFF(%ebx)
				fdivp	%st, %st(1)
				fstpl	-7344(%ebp)
  172         max lchrom = max lspher
				fldl	-7344(%ebp)
				fstpl	-7328(%ebp)
  173         max osc = 0.0025
				fldl	.LC33@GOTOFF(%ebx)
				fstpl	-7336(%ebp)
  174     %repeat
				jmp	.L17
		.L33:
  175     %comment Print the analysis of the ray trace
  176     print string("  Marginal ray    ")
				leal	-576(%ebp), %eax
				leal	.LC1@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6464(%ebp), %eax
				leal	-576(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-576(%ebp), %eax
				leal	-6464(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE110:
		.LBB111:
		.LBB112:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-576(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE112:
		.LBE111:
  177     outbigreal(1, od sa(marginal ray, od field))
				movl	-7472(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7468(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				subl	$4, %esp
				leal	-320(%ebp), %eax
				leal	-8(%esp), %esp
				fstpl	(%esp)
				pushl	$1
				movl	%eax, %ecx
				call	OUTBIGREAL.6070
				addl	$16, %esp
		.LBB113:
  178     print string("   ")
				leal	-832(%ebp), %eax
				leal	.LC2@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6208(%ebp), %eax
				leal	-832(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-832(%ebp), %eax
				leal	-6208(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE113:
		.LBB114:
		.LBB115:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-832(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE115:
		.LBE114:
  179     print(od sa(marginal ray, sa field), 5, 11); newline
				movl	-7472(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7464(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				fstpl	-7224(%ebp)
				movl	$5, -7376(%ebp)
				movl	$11, -7372(%ebp)
		.LBB116:
		.LBB117:
				pushl	-7372(%ebp)
				pushl	-7376(%ebp)
				pushl	-7220(%ebp)
				pushl	-7224(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE117:
		.LBE116:
		.LBB118:
		.LBB119:
				call	_imp_newline@PLT
		.LBE119:
		.LBE118:
		.LBB120:
  180     print string("  Paraxial ray    ")
				leal	-1088(%ebp), %eax
				leal	.LC3@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5952(%ebp), %eax
				leal	-1088(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1088(%ebp), %eax
				leal	-5952(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE120:
		.LBB121:
		.LBB122:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1088(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE122:
		.LBE121:
  181     outbigreal(1, od sa(paraxial ray, od field))
				movl	-48(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7468(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				subl	$4, %esp
				leal	-320(%ebp), %eax
				leal	-8(%esp), %esp
				fstpl	(%esp)
				pushl	$1
				movl	%eax, %ecx
				call	OUTBIGREAL.6070
				addl	$16, %esp
		.LBB123:
  182     print string("   ")
				leal	-1344(%ebp), %eax
				leal	.LC2@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5696(%ebp), %eax
				leal	-1344(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1344(%ebp), %eax
				leal	-5696(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE123:
		.LBB124:
		.LBB125:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1344(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE125:
		.LBE124:
  183     print(od sa(paraxial ray, sa field), 5, 11); newline
				movl	-48(%ebp), %eax
				leal	-1(%eax), %edx
				movl	-7464(%ebp), %eax
				subl	$1, %eax
				addl	%edx, %edx
				addl	%edx, %eax
				fldl	-7216(%ebp,%eax,8)
				fstpl	-7232(%ebp)
				movl	$5, -7384(%ebp)
				movl	$11, -7380(%ebp)
		.LBB126:
		.LBB127:
				pushl	-7380(%ebp)
				pushl	-7384(%ebp)
				pushl	-7228(%ebp)
				pushl	-7232(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE127:
		.LBE126:
		.LBB128:
		.LBB129:
				call	_imp_newline@PLT
		.LBE129:
		.LBE128:
		.LBB130:
  184     print string("Longitudinal spherical aberration: ")
				leal	-1600(%ebp), %eax
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5440(%ebp), %eax
				leal	-1600(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1600(%ebp), %eax
				leal	-5440(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE130:
		.LBB131:
		.LBB132:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1600(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
				fldl	-7368(%ebp)
				fstpl	-7240(%ebp)
				movl	$5, -7392(%ebp)
				movl	$11, -7388(%ebp)
		.LBE132:
		.LBE131:
		.LBB133:
		.LBB134:
				pushl	-7388(%ebp)
				pushl	-7392(%ebp)
				pushl	-7236(%ebp)
				pushl	-7240(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE134:
		.LBE133:
		.LBB135:
		.LBB136:
				call	_imp_newline@PLT
		.LBE136:
		.LBE135:
		.LBB137:
  185     print(aberr lspher, 5, 11); newline
  186     print string("    (Maximum permissible): ")
				leal	-1856(%ebp), %eax
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5184(%ebp), %eax
				leal	-1856(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1856(%ebp), %eax
				leal	-5184(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE137:
		.LBB138:
		.LBB139:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1856(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
				fldl	-7344(%ebp)
				fstpl	-7248(%ebp)
				movl	$5, -7400(%ebp)
				movl	$11, -7396(%ebp)
		.LBE139:
		.LBE138:
		.LBB140:
		.LBB141:
				pushl	-7396(%ebp)
				pushl	-7400(%ebp)
				pushl	-7244(%ebp)
				pushl	-7248(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE141:
		.LBE140:
		.LBB142:
		.LBB143:
				call	_imp_newline@PLT
		.LBE143:
		.LBE142:
		.LBB144:
  187     print(max lspher, 5, 11); newline
  188     print string("Offense against sine condition (coma): ")
				leal	-2112(%ebp), %eax
				leal	.LC6@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4928(%ebp), %eax
				leal	-2112(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2112(%ebp), %eax
				leal	-4928(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE144:
		.LBB145:
		.LBB146:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2112(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
				fldl	-7360(%ebp)
				fstpl	-7256(%ebp)
				movl	$5, -7408(%ebp)
				movl	$11, -7404(%ebp)
		.LBE146:
		.LBE145:
		.LBB147:
		.LBB148:
				pushl	-7404(%ebp)
				pushl	-7408(%ebp)
				pushl	-7252(%ebp)
				pushl	-7256(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE148:
		.LBE147:
		.LBB149:
		.LBB150:
				call	_imp_newline@PLT
		.LBE150:
		.LBE149:
		.LBB151:
  189     print(aberr osc, 5, 11); newline
  190     print string("    (Maximum permissible): ")
				leal	-2368(%ebp), %eax
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4672(%ebp), %eax
				leal	-2368(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2368(%ebp), %eax
				leal	-4672(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE151:
		.LBB152:
		.LBB153:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2368(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
				fldl	-7336(%ebp)
				fstpl	-7264(%ebp)
				movl	$5, -7416(%ebp)
				movl	$11, -7412(%ebp)
		.LBE153:
		.LBE152:
		.LBB154:
		.LBB155:
				pushl	-7412(%ebp)
				pushl	-7416(%ebp)
				pushl	-7260(%ebp)
				pushl	-7264(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE155:
		.LBE154:
		.LBB156:
		.LBB157:
				call	_imp_newline@PLT
		.LBE157:
		.LBE156:
		.LBB158:
  191     print(max osc, 5, 11); newline
  192     print string("Axial chromatic aberration: ")
				leal	-2624(%ebp), %eax
				leal	.LC7@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4416(%ebp), %eax
				leal	-2624(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2624(%ebp), %eax
				leal	-4416(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE158:
		.LBB159:
		.LBB160:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2624(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
				fldl	-7352(%ebp)
				fstpl	-7272(%ebp)
				movl	$5, -7424(%ebp)
				movl	$11, -7420(%ebp)
		.LBE160:
		.LBE159:
		.LBB161:
		.LBB162:
				pushl	-7420(%ebp)
				pushl	-7424(%ebp)
				pushl	-7268(%ebp)
				pushl	-7272(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE162:
		.LBE161:
		.LBB163:
		.LBB164:
				call	_imp_newline@PLT
		.LBE164:
		.LBE163:
		.LBB165:
  193     print(aberr lchrom, 5, 11); newline
  194     print string("    (Maximum permissible): ")
				leal	-2880(%ebp), %eax
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4160(%ebp), %eax
				leal	-2880(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2880(%ebp), %eax
				leal	-4160(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE165:
		.LBB166:
		.LBB167:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2880(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
				fldl	-7328(%ebp)
				fstpl	-7280(%ebp)
				movl	$5, -7432(%ebp)
				movl	$11, -7428(%ebp)
		.LBE167:
		.LBE166:
		.LBB168:
		.LBB169:
				pushl	-7428(%ebp)
				pushl	-7432(%ebp)
				pushl	-7276(%ebp)
				pushl	-7280(%ebp)
				call	_imp_print@PLT
				addl	$16, %esp
		.LBE169:
		.LBE168:
		.LBB170:
		.LBB171:
				call	_imp_newline@PLT
				movl	$0, -7436(%ebp)
		.LBE171:
		.LBE170:
		.LBB172:
		.LBB173:
				subl	$12, %esp
				pushl	-7436(%ebp)
				call	exit@PLT
		.LBE173:
		.LBE172:
		.LFE189:
		ARCSIN.6066:
		.LFB191:
  195     print(max lchrom, 5, 11); newline
  196 %end %of %program
  163 Statements compiled
