         Edinburgh IMP77 Compiler - Version 8.4
    1 %realslong
		.Ltext0:
		ARCSIN.6429:
		.LFB187:
    2
    3 %begin
		.LVL58:
				pushq	%r15
				pushq	%r14
				pushq	%r13
				pushq	%r12
				pushq	%rbp
				pushq	%rbx
				subq	$5512, %rsp
				movq	%fs:40, %rax
				movq	%rax, 5496(%rsp)
				xorl	%eax, %eax
				leaq	5568(%rsp), %rax
				movq	%rax, 5480(%rsp)
    4     %integer a line, b line, c line, d line,
				call	_imp_initialise@PLT
		.LVL59:
    5              e line, f line, g prime line,
    6              h line
    7     %real %array spectral line(1:8)
    8     %integer current surfaces
    9     %real %array test case(1:4, 1:4)
   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)
   21     %real od cline, od fline
   22     %real %fn cot(%real x)
   23         %result = 1.0 / (sin(x) / cos(x))
				movsd	24(%rsp), %xmm4
				divsd	16(%rsp), %xmm4
				movsd	.LC0(%rip), %xmm1
				divsd	%xmm4, %xmm1
		.LBE144:
		.LBE143:
   24     %end {cot}
   25     %real %fn arc sin(%real x)
		.LVL0:
				subq	$24, %rsp
				movsd	%xmm0, 8(%rsp)
		.LBB102:
		.LBB103:
				movapd	%xmm0, %xmm1
				mulsd	%xmm0, %xmm1
		.LBE103:
		.LBE102:
   26         %result = 2 * arc tan1(x / (1 + sqrt(1 - x^2)))
				movsd	.LC0(%rip), %xmm0
		.LVL1:
				subsd	%xmm1, %xmm0
		.LVL2:
		.LBB104:
		.LBB105:
				sqrtsd	%xmm0, %xmm4
				movsd	%xmm4, (%rsp)
				pxor	%xmm1, %xmm1
				ucomisd	%xmm0, %xmm1
				ja	.L4
		.LVL3:
		.L2:
		.LBE105:
		.LBE104:
				movsd	(%rsp), %xmm0
				addsd	.LC0(%rip), %xmm0
				movsd	8(%rsp), %xmm3
				divsd	%xmm0, %xmm3
		.LVL4:
				movapd	%xmm3, %xmm0
		.LBB107:
		.LBB108:
				call	atan@PLT
		.LVL5:
		.LBE108:
		.LBE107:
				addsd	%xmm0, %xmm0
   27     %end {arc sin}
				addq	$24, %rsp
				ret
		.LVL6:
		.L4:
		.LBB109:
		.LBB106:
				call	sqrt@PLT
		.LVL7:
				jmp	.L2
		.LBE106:
		.LBE109:
		.LFE187:
				.section	.rodata.str1.8,"aMS",@progbits,1
				.align 8
		.LC2:
				.string	"Illegal cycle I = 1, 1, CURRENTSURFACES"
		TRACELINE.6458:
		.LFB190:
   28     %routine out big real(%integer channel, %real x)
   29         %real fraction
   30         fraction = x
   31     %end {out big real}
?CHANNEL unused
   32     %routine transit surface
   33         %real iang, rang, iang sin, rang sin,
   34               old axis slope angle, sagitta
   35         %if paraxial = paraxial ray %then %start
				movl	272(%rbx), %eax
				cmpl	%eax, 276(%rbx)
				je	.L32
		.L13:
   36             %if radius of curvature # 0 %then %start
				movsd	8(%rsp), %xmm4
				ucomisd	.LC1(%rip), %xmm4
				jp	.L28
				je	.L14
		.L28:
   37                 %if object distance = 0 %then %start
				movsd	224(%rbx), %xmm1
				ucomisd	.LC1(%rip), %xmm1
				jp	.L16
				jne	.L16
   38                     axis slope angle = 0
   39                     iang sin = ray height / radius of curvature
				movsd	208(%rbx), %xmm1
				movapd	%xmm1, %xmm2
				divsd	8(%rsp), %xmm2
		.LVL20:
   40                 %finish %else                                         %c
   41                     iang sin = ((object distance -                    %c
   42                         radius of curvature) / radius of curvature) * %c
   43                         axis slope angle
				movsd	216(%rbx), %xmm4
				movapd	%xmm1, %xmm2
				movsd	8(%rsp), %xmm5
				subsd	%xmm5, %xmm2
				divsd	%xmm5, %xmm2
				mulsd	%xmm4, %xmm2
		.LVL23:
   44                 rang sin = (from index / to index) * iang sin
				movsd	200(%rbx), %xmm1
				divsd	192(%rbx), %xmm1
				mulsd	%xmm2, %xmm1
		.LVL21:
				movsd	200(%rbx), %xmm3
				divsd	192(%rbx), %xmm3
				mulsd	%xmm3, %xmm2
		.LVL24:
   45                 old axis slope angle = axis slope angle
   46                 axis slope angle = axis slope angle +                 %c
				movapd	%xmm2, %xmm0
				addsd	.LC1(%rip), %xmm0
				subsd	%xmm1, %xmm0
				movsd	%xmm0, 216(%rbx)
				jmp	.L17
		.LVL22:
		.L16:
				movapd	%xmm4, %xmm0
				addsd	%xmm2, %xmm0
				subsd	%xmm2, %xmm0
				movsd	%xmm0, 216(%rbx)
   47                     iang sin - rang sin
   48                 %if object distance # 0 %then                         %c
   49                     ray height = object distance * old axis slope angle
				mulsd	%xmm4, %xmm1
		.LVL25:
				movsd	%xmm1, 208(%rbx)
		.LVL26:
		.L17:
   50                 object distance = ray height / axis slope angle
				movsd	208(%rbx), %xmm1
				divsd	%xmm0, %xmm1
				movsd	%xmm1, 224(%rbx)
				jmp	.L24
		.L14:
   51             %else
   52                 object distance = object distance * (to index / from index)
				movsd	192(%rbx), %xmm2
				movsd	200(%rbx), %xmm0
				movapd	%xmm2, %xmm1
				divsd	%xmm0, %xmm1
				mulsd	224(%rbx), %xmm1
				movsd	%xmm1, 224(%rbx)
   53                 axis slope angle = axis slope angle * (from index / to index)
				divsd	%xmm2, %xmm0
				mulsd	216(%rbx), %xmm0
				movsd	%xmm0, 216(%rbx)
				jmp	.L24
		.L33:
   54             %finish
   55         %else
   56             %if radius of curvature # 0 %then %start
				movsd	8(%rsp), %xmm5
				ucomisd	.LC1(%rip), %xmm5
				jp	.L29
				je	.L19
		.L29:
   57                 %if object distance = 0 %then %start
				movsd	224(%rbx), %xmm6
				movsd	%xmm6, 16(%rsp)
				ucomisd	.LC1(%rip), %xmm6
				jp	.L21
				je	.L33
		.L21:
		.LVL44:
		.LBB147:
		.LBB148:
				movsd	216(%rbx), %xmm0
				call	sin@PLT
		.LVL45:
		.LBE148:
		.LBE147:
   58                     axis slope angle = 0
				movq	$0x000000000, 216(%rbx)
   59                     iang sin = ray height / radius of curvature
				movsd	208(%rbx), %xmm0
				divsd	8(%rsp), %xmm0
				movsd	%xmm0, 16(%rsp)
		.LVL27:
		.L22:
   60                 %finish %else %c
   61                     iang sin = ((object distance -                    %c
   62                         radius of curvature) / radius of curvature) * %c
   63                         sin(axis slope angle)
				movsd	16(%rsp), %xmm1
				movsd	8(%rsp), %xmm3
				subsd	%xmm3, %xmm1
				divsd	%xmm3, %xmm1
				mulsd	%xmm0, %xmm1
				movsd	%xmm1, 16(%rsp)
		.LVL46:
				jmp	.L22
		.LVL47:
		.L19:
		.LBB149:
		.LBB150:
				movsd	216(%rbx), %xmm0
				call	sin@PLT
		.LVL48:
		.LBE150:
		.LBE149:
   64                 iang = arc sin(iang sin)
				movsd	16(%rsp), %xmm0
				call	ARCSIN.6429
		.LVL28:
   65                 rang sin = (from index / to index) * iang sin
				movsd	200(%rbx), %xmm0
				divsd	192(%rbx), %xmm0
				mulsd	16(%rsp), %xmm0
		.LVL30:
   66                 old axis slope angle = axis slope angle
   67                 axis slope angle = axis slope angle +                 %c
				addsd	216(%rbx), %xmm0
		.LVL29:
				movsd	%xmm0, 8(%rsp)
				call	ARCSIN.6429
		.LVL31:
				movsd	8(%rsp), %xmm5
				subsd	%xmm0, %xmm5
				movq	%xmm5, %r15
				leaq	56(%rsp), %rdi
				leaq	48(%rsp), %rsi
				movsd	%xmm5, 16(%rsp)
		.LVL32:
				movapd	%xmm5, %xmm0
				call	sincos@PLT
		.LVL33:
				movsd	48(%rsp), %xmm3
				movsd	%xmm3, 16(%rsp)
				movsd	56(%rsp), %xmm4
				movsd	%xmm4, 24(%rsp)
				movq	%r15, 216(%rbx)
   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)
				movsd	232(%rbx), %xmm3
				movsd	%xmm3, 32(%rsp)
		.LVL34:
				movsd	8(%rsp), %xmm6
				mulsd	.LC3(%rip), %xmm6
		.LVL35:
				movapd	%xmm6, %xmm0
		.LBB139:
		.LBB140:
				call	sin@PLT
		.LVL36:
				movsd	%xmm0, 40(%rsp)
		.LVL37:
		.LBE140:
		.LBE139:
		.LBB141:
		.LBB142:
				movsd	8(%rsp), %xmm0
		.LVL38:
				call	sin@PLT
		.LVL39:
		.LBE142:
		.LBE141:
		.LBB143:
		.LBB144:
				movapd	%xmm3, %xmm1
				addsd	%xmm3, %xmm1
		.LBB145:
		.LBB146:
				movsd	40(%rsp), %xmm2
				mulsd	%xmm2, %xmm2
		.LBE146:
		.LBE145:
				mulsd	%xmm2, %xmm1
		.LVL40:
   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
				movsd	32(%rsp), %xmm3
				mulsd	%xmm3, %xmm0
				mulsd	%xmm1, %xmm0
				addsd	%xmm1, %xmm0
				movsd	%xmm0, 224(%rbx)
		.L18:
		.L23:
		.LVL41:
		.L24:
		.LBE138:
		.LBE137:
   80                     sin(old axis slope angle + iang)) *               %c
   81                     cot(axis slope angle)) + sagitta
   82             %else
   83                 rang = -arcsin((from index / to index) *              %c
				movsd	200(%rbx), %xmm1
				divsd	192(%rbx), %xmm1
				mulsd	%xmm1, %xmm0
				call	ARCSIN.6429
		.LVL49:
				movq	%xmm0, %r15
		.LVL50:
		.LBB151:
		.LBB152:
				movsd	%xmm0, 8(%rsp)
				call	cos@PLT
		.LVL51:
				movsd	%xmm0, 8(%rsp)
		.LVL52:
		.LBE152:
		.LBE151:
		.LBB153:
		.LBB154:
				movsd	216(%rbx), %xmm0
				call	cos@PLT
		.LVL53:
		.LBE154:
		.LBE153:
   84                     sin(axis slope angle))
   85                 object distance = object distance * ((to index *      %c
				movsd	8(%rsp), %xmm1
				mulsd	192(%rbx), %xmm1
				mulsd	200(%rbx), %xmm0
				divsd	%xmm0, %xmm1
				movapd	%xmm1, %xmm0
				mulsd	224(%rbx), %xmm0
				movsd	%xmm0, 224(%rbx)
   86                     cos(-rang)) / (from index *                       %c
   87                     cos(axis slope angle)))
   88                 axis slope angle = -rang
				movq	%r15, 216(%rbx)
				jmp	.L24
		.L10:
		.LVL54:
		.L5:
		.LBE155:
		.LBE156:
		.LBE135:
   89             %finish
   90         %finish
   91     %end {transit surface}
   92     %routine trace line(%integer line, %real ray h)
		.LVL8:
				pushq	%r15
				pushq	%r14
				pushq	%r13
				pushq	%r12
				pushq	%rbp
				pushq	%rbx
				subq	$856, %rsp
				movl	%edi, %r14d
				movq	%r10, %rbx
				movq	%fs:40, %rax
				movq	%rax, 840(%rsp)
				xorl	%eax, %eax
   93         %integer i
   94         object distance = 0
				movq	$0x000000000, 224(%r10)
   95         ray height = ray h
				movsd	%xmm0, 208(%r10)
   96         from index = 1
				movq	.LC0(%rip), %rax
				movq	%rax, 200(%r10)
		.LBB135:
   97         %for i = 1, 1, current surfaces %cycle
   98             radius of curvature = test case(i, curvature radius)
				movl	268(%r10), %r13d
		.LVL9:
				movl	264(%rbx), %eax
				subl	$1, %eax
				cltq
				movslq	%ebp, %rdx
				salq	$2, %rdx
				leaq	8(%rax,%rdx), %rax
				movsd	(%rbx,%rax,8), %xmm7
				movsd	%xmm7, 8(%rsp)
				movsd	%xmm7, 232(%rbx)
   99             to index = test case(i, index of refraction)
				movl	%r13d, %eax
				subl	$1, %eax
				js	.L31
		.LVL10:
		.L6:
				leaq	320(%rsp), %rdi
		.LVL13:
				leaq	.LC2(%rip), %rsi
				call	_imp_c2istr@PLT
		.LVL14:
				movl	_imp_current_line(%rip), %ebp
				testl	%ebp, %ebp
				movl	$99, %eax
				cmove	%eax, %ebp
				movq	_imp_current_file(%rip), %rsi
				testq	%rsi, %rsi
				je	.L8
				leaq	576(%rsp), %rdi
				call	_imp_c2istr@PLT
		.LVL15:
		.L9:
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	568(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				pushq	1080(%rsp)
				movl	$0, %ecx
				movl	$1, %edx
				movl	$5, %esi
				movl	%ebp, %edi
				call	_signal_event@PLT
		.LVL16:
				addq	$512, %rsp
				jmp	.L6
		.L8:
		.LVL17:
		.LBB136:
				movabsq	$8603403804667503988, %rax
				movabsq	$3344032049121093167, %rdx
				movq	%rax, 577(%rsp)
				movq	%rdx, 585(%rsp)
				movq	$7368041, 593(%rsp)
				movq	$0, 601(%rsp)
				movb	$0, 609(%rsp)
				movw	$0, 610(%rsp)
				movl	$0, 612(%rsp)
				leaq	616(%rsp), %rdi
				movl	$27, %ecx
				movl	$0, %eax
				rep stosq
				movb	$19, 576(%rsp)
				movq	576(%rsp), %rax
				movq	584(%rsp), %rdx
				movq	%rax, 64(%rsp)
				movq	%rdx, 72(%rsp)
				movq	592(%rsp), %rax
				movq	600(%rsp), %rdx
				movq	%rax, 80(%rsp)
				movq	%rdx, 88(%rsp)
				movq	608(%rsp), %rax
				movq	616(%rsp), %rdx
				movq	%rax, 96(%rsp)
				movq	%rdx, 104(%rsp)
				movq	624(%rsp), %rax
				movq	632(%rsp), %rdx
				movq	%rax, 112(%rsp)
				movq	%rdx, 120(%rsp)
				movq	640(%rsp), %rax
				movq	648(%rsp), %rdx
				movq	%rax, 128(%rsp)
				movq	%rdx, 136(%rsp)
				movq	656(%rsp), %rax
				movq	664(%rsp), %rdx
				movq	%rax, 144(%rsp)
				movq	%rdx, 152(%rsp)
				movq	672(%rsp), %rax
				movq	680(%rsp), %rdx
				movq	%rax, 160(%rsp)
				movq	%rdx, 168(%rsp)
				movq	688(%rsp), %rax
				movq	696(%rsp), %rdx
				movq	%rax, 176(%rsp)
				movq	%rdx, 184(%rsp)
				movq	704(%rsp), %rax
				movq	712(%rsp), %rdx
				movq	%rax, 192(%rsp)
				movq	%rdx, 200(%rsp)
				movq	720(%rsp), %rax
				movq	728(%rsp), %rdx
				movq	%rax, 208(%rsp)
				movq	%rdx, 216(%rsp)
				movq	736(%rsp), %rax
				movq	744(%rsp), %rdx
				movq	%rax, 224(%rsp)
				movq	%rdx, 232(%rsp)
				movq	752(%rsp), %rax
				movq	760(%rsp), %rdx
				movq	%rax, 240(%rsp)
				movq	%rdx, 248(%rsp)
				movq	768(%rsp), %rax
				movq	776(%rsp), %rdx
				movq	%rax, 256(%rsp)
				movq	%rdx, 264(%rsp)
				movq	784(%rsp), %rax
				movq	792(%rsp), %rdx
				movq	%rax, 272(%rsp)
				movq	%rdx, 280(%rsp)
				movq	800(%rsp), %rax
				movq	808(%rsp), %rdx
				movq	%rax, 288(%rsp)
				movq	%rdx, 296(%rsp)
				movq	816(%rsp), %rax
				movq	824(%rsp), %rdx
				movq	%rax, 304(%rsp)
				movq	%rdx, 312(%rsp)
		.LVL18:
		.LBE136:
				movb	$19, 64(%rsp)
				movq	64(%rsp), %rax
				movq	72(%rsp), %rdx
				movq	%rax, 576(%rsp)
				movq	%rdx, 584(%rsp)
				jmp	.L9
		.LVL19:
		.L32:
		.LBB137:
		.LBB138:
				movl	260(%rbx), %eax
				subl	$1, %eax
				cltq
				leaq	8(%rdx,%rax), %rax
				movsd	(%rbx,%rax,8), %xmm2
				movsd	%xmm2, 192(%rbx)
  100             %if to index > 1 %then                                     %c
				movsd	.LC0(%rip), %xmm4
				ucomisd	%xmm2, %xmm4
				jnb	.L12
  101                 to index = to index + ((spectral line(d line) -        %c
				subl	$1, %r14d
		.LVL11:
				movslq	%r14d, %r14
				jmp	.L11
		.LVL12:
		.L31:
				movl	256(%rbx), %eax
				subl	$1, %eax
				cltq
				movsd	(%rbx,%rax,8), %xmm1
				subsd	(%rbx,%r14,8), %xmm1
				movl	252(%rbx), %eax
				leal	-1(%rax), %edx
				movslq	%edx, %rdx
				movl	248(%rbx), %eax
				subl	$1, %eax
				cltq
				movsd	(%rbx,%rdx,8), %xmm0
				subsd	(%rbx,%rax,8), %xmm0
				divsd	%xmm0, %xmm1
				movapd	%xmm2, %xmm0
				subsd	%xmm4, %xmm0
				movl	244(%rbx), %eax
				subl	$1, %eax
				cltq
				movslq	%ebp, %rdx
				leaq	8(%rax,%rdx,4), %rax
				divsd	(%rbx,%rax,8), %xmm0
				mulsd	%xmm1, %xmm0
				addsd	%xmm2, %xmm0
				movsd	%xmm0, 192(%rbx)
		.L12:
		.LBB156:
		.LBB155:
  102                     spectral line(line)) /                             %c
				testl	%r13d, %r13d
				je	.L5
				movl	$0, %ebp
				cmpl	%r12d, %r13d
				je	.L5
		.LVL42:
		.L11:
  103                     (spectral line(c line) - spectral line(f line))) * %c
				leal	1(%rbp), %r12d
		.LVL43:
  104                     ((test case(i, index of refraction) - 1.0) /       %c
  105                     test case(i, dispersion))
  106             transit surface
  107             from index = to index
				movsd	192(%rbx), %xmm0
				movsd	%xmm0, 200(%rbx)
  108             %if i < current surfaces %then                             %c
				cmpl	268(%rbx), %r12d
				jge	.L25
  109                 object distance = object distance -                    %c
				movl	240(%rbx), %eax
				subl	$1, %eax
				cltq
				movslq	%ebp, %rbp
				leaq	8(%rax,%rbp,4), %rax
				movsd	224(%rbx), %xmm0
				subsd	(%rbx,%rax,8), %xmm0
				movsd	%xmm0, 224(%rbx)
		.L25:
				movl	%r12d, %ebp
  110                     test case(i, edge thickness)
  111         %repeat
  112     %end {trace line}
  113     %comment END GLOBAL DECLARATONS
				movq	840(%rsp), %rax
				xorq	%fs:40, %rax
				jne	.L34
				addq	$856, %rsp
				popq	%rbx
				popq	%rbp
				popq	%r12
				popq	%r13
		.LVL55:
				popq	%r14
				popq	%r15
				ret
		.LVL56:
		.L34:
				call	__stack_chk_fail@PLT
		.LVL57:
		.LFE190:
				.globl	main
		main:
		.LFB185:
  114     %comment Spectral lines
  115     a line = 1; b line = 2; c line = 3; d line = 4
  116         e line = 5; f line = 6; g prime line = 7
  117         h line = 8
				movl	$3, 5452(%rsp)
				movl	$6, 5448(%rsp)
		.LVL61:
				movq	.LC4(%rip), %rax
				movq	%rax, 5200(%rsp)
  118     spectral line(a line)       = 7621.0
				movl	$4, 5456(%rsp)
		.LVL60:
  119     spectral line(b line)       = 6869.955
				movq	.LC5(%rip), %rax
				movq	%rax, 5208(%rsp)
  120     spectral line(c line)       = 6562.8160
				movq	.LC6(%rip), %rax
				movq	%rax, 5216(%rsp)
  121     spectral line(d line)       = 5895.944
				movq	.LC7(%rip), %rax
				movq	%rax, 5224(%rsp)
  122     spectral line(e line)       = 5269.557
				movq	.LC8(%rip), %rax
				movq	%rax, 5232(%rsp)
  123     spectral line(f line)       = 4861.344
				movq	.LC9(%rip), %rax
				movq	%rax, 5240(%rsp)
  124     spectral line(g prime line) = 4340.477
				movq	.LC10(%rip), %rax
				movq	%rax, 5248(%rsp)
  125     spectral line(h line)       = 3968.494
				movq	.LC11(%rip), %rax
				movq	%rax, 5256(%rsp)
  126     %comment  Initialise the test case array
  127     current surfaces = 4
				movl	$4, 5468(%rsp)
  128     curvature radius = 1; index of refraction = 2; dispersion = 3
				movl	$1, 5464(%rsp)
  129         edge thickness = 4
				movl	$2, 5460(%rsp)
				movl	$4, 5440(%rsp)
				movq	.LC12(%rip), %rax
				movq	%rax, 5264(%rsp)
  130     test case(1, curvature radius)    =   27.05
				movl	$3, 5444(%rsp)
  131     test case(1, index of refraction) =    1.5137
				movq	.LC13(%rip), %rax
				movq	%rax, 5272(%rsp)
  132     test case(1, dispersion)          =   63.6
				movq	.LC14(%rip), %rax
				movq	%rax, 5280(%rsp)
  133     test case(1, edge thickness)      =    0.52
				movq	.LC15(%rip), %rax
				movq	%rax, 5288(%rsp)
  134     test case(2, curvature radius)    =  -16.68
				movsd	.LC16(%rip), %xmm1
				movsd	%xmm1, 5296(%rsp)
  135     test case(2, index of refraction) =    1.0
				movsd	.LC0(%rip), %xmm0
				movsd	%xmm0, 5304(%rsp)
  136     test case(2, dispersion)          =    0.0
				movq	$0x000000000, 5312(%rsp)
  137     test case(2, edge thickness)      =    0.138
				movq	.LC17(%rip), %rax
				movq	%rax, 5320(%rsp)
  138     test case(3, curvature radius)    =  -16.68
				movsd	%xmm1, 5328(%rsp)
  139     test case(3, index of refraction) =    1.6164
				movq	.LC18(%rip), %rax
				movq	%rax, 5336(%rsp)
  140     test case(3, dispersion)          =   36.7
				movq	.LC19(%rip), %rax
				movq	%rax, 5344(%rsp)
  141     test case(3, edge thickness)      =    0.38
				movq	.LC20(%rip), %rax
				movq	%rax, 5352(%rsp)
  142     test case(4, curvature radius)    =  -78.1
				movq	.LC21(%rip), %rax
				movq	%rax, 5360(%rsp)
  143     test case(4, index of refraction) =    1.0
				movsd	%xmm0, 5368(%rsp)
  144     test case(4, dispersion)          =    0.0
				movq	$0x000000000, 5376(%rsp)
  145     test case(4, edge thickness)      =    0.0
				movq	$0x000000000, 5384(%rsp)
		.LVL62:
  146     marginal ray = 1; paraxial ray = 2
  147     od field = 1; sa field = 2
				movl	$2, 5472(%rsp)
		.LVL63:
		.LBB157:
		.LBB158:
  148     %comment  number of iterations = 40263820;
  149     number of iterations = 1
  150     clear aperture = 4
  151     %for iteration = 1, 1, number of iterations %cycle
  152         %for paraxial = marginal ray, 1, paraxial ray %cycle
  153             trace line(d line, clear aperture / 2)
				leaq	5200(%rsp), %rbx
		.L36:
				movq	%rbx, %r10
				movsd	.LC22(%rip), %xmm0
				movl	5456(%rsp), %edi
				call	TRACELINE.6458
		.LVL64:
  154             od sa(paraxial, od field) = object distance
				movl	5476(%rsp), %edx
				leal	-1(%rdx), %eax
				cltq
				salq	$4, %rax
				movsd	5424(%rsp), %xmm0
				movsd	%xmm0, 48(%rsp,%rax)
  155             od sa(paraxial, sa field) = axis slope angle
				movsd	5416(%rsp), %xmm0
				movsd	%xmm0, 56(%rsp,%rax)
		.LDL1:
  156         %repeat
  157         %comment Trace marginal ray in C
				movl	$0, %edx
				cmpl	$2, %edx
				jne	.L36
		.L37:
		.LBE158:
				movl	$1, 5476(%rsp)
  158         paraxial = marginal ray
				addl	$1, %edx
				movl	%edx, 5476(%rsp)
  159         trace line(c line, clear aperture / 2)
				leaq	5200(%rsp), %rbx
				movq	%rbx, %r10
				movsd	.LC22(%rip), %xmm0
				movl	5452(%rsp), %edi
				call	TRACELINE.6458
		.LVL65:
  160         od cline = object distance
				movsd	5424(%rsp), %xmm6
				movsd	%xmm6, 32(%rsp)
		.LVL66:
  161         %comment Trace marginal ray in F
  162         trace line(f line, clear aperture / 2)
				movq	%rbx, %r10
				movsd	.LC22(%rip), %xmm0
				movl	5448(%rsp), %edi
				call	TRACELINE.6458
		.LVL67:
  163         od fline = object distance
  164         aberr lspher = od sa(paraxial ray, od field) -               %c
				movl	5472(%rsp), %eax
				leal	-1(%rax), %ebx
				movslq	%ebx, %rbx
				salq	$4, %rbx
				movsd	48(%rsp,%rbx), %xmm3
				movsd	48(%rsp), %xmm4
				movsd	%xmm3, 8(%rsp)
				movsd	%xmm4, 16(%rsp)
				subsd	%xmm4, %xmm3
				movsd	%xmm3, 40(%rsp)
		.LVL68:
  165             od sa(marginal ray, od field)
  166         aberr osc = 1 - ((od sa(paraxial ray, od field) *            %c
				movsd	56(%rsp), %xmm5
		.LVL69:
		.LBB159:
		.LBB160:
				movsd	%xmm5, 24(%rsp)
				movapd	%xmm5, %xmm0
				call	sin@PLT
		.LVL70:
		.LBE160:
		.LBE159:
				movsd	8(%rsp), %xmm1
				mulsd	56(%rsp,%rbx), %xmm1
				movsd	16(%rsp), %xmm2
				mulsd	%xmm0, %xmm2
				divsd	%xmm2, %xmm1
				movsd	.LC0(%rip), %xmm2
				subsd	%xmm1, %xmm2
				movsd	%xmm2, 16(%rsp)
		.LVL71:
  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
				movsd	5424(%rsp), %xmm1
		.LVL72:
				subsd	32(%rsp), %xmm1
		.LVL73:
				movsd	%xmm1, 32(%rsp)
		.LVL74:
		.LBB161:
		.LBB162:
				mulsd	%xmm0, %xmm0
		.LBE162:
		.LBE161:
  171         max lspher = 0.0000926 / sin(od sa(marginal ray, sa field)) ^ 2
				movsd	.LC23(%rip), %xmm1
		.LVL75:
				divsd	%xmm0, %xmm1
				movsd	%xmm1, 8(%rsp)
		.LDL2:
		.LVL76:
		.LDL3:
		.LBE157:
		.LBB163:
  172         max lchrom = max lspher
  173         max osc = 0.0025
  174     %repeat
  175     %comment Print the analysis of the ray trace
  176     print string("  Marginal ray    ")
				movabsq	$7956003957683068960, %rax
				movabsq	$2314983667901951073, %rdx
				movq	%rax, 4945(%rsp)
				movq	%rdx, 4953(%rsp)
				movq	$8224, 4961(%rsp)
				movq	$0, 4969(%rsp)
				movl	$0, %ebp
				movb	$0, 4977(%rsp)
				movw	$0, 4978(%rsp)
				movl	$0, 4980(%rsp)
				leaq	4984(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$18, 4944(%rsp)
				movq	4944(%rsp), %rax
				movq	4952(%rsp), %rdx
				movq	%rax, 80(%rsp)
				movq	%rdx, 88(%rsp)
				movdqa	4960(%rsp), %xmm7
				movaps	%xmm7, 96(%rsp)
				movdqa	4976(%rsp), %xmm7
				movaps	%xmm7, 112(%rsp)
				movdqa	4992(%rsp), %xmm6
				movaps	%xmm6, 128(%rsp)
				movdqa	5008(%rsp), %xmm7
				movaps	%xmm7, 144(%rsp)
				movdqa	5024(%rsp), %xmm4
				movaps	%xmm4, 160(%rsp)
				movdqa	5040(%rsp), %xmm6
				movaps	%xmm6, 176(%rsp)
				movdqa	5056(%rsp), %xmm7
				movaps	%xmm7, 192(%rsp)
				movdqa	5072(%rsp), %xmm4
				movaps	%xmm4, 208(%rsp)
				movdqa	5088(%rsp), %xmm6
				movaps	%xmm6, 224(%rsp)
				movdqa	5104(%rsp), %xmm7
				movaps	%xmm7, 240(%rsp)
				movq	5120(%rsp), %r13
				movq	5128(%rsp), %r14
				movq	%r13, 256(%rsp)
				movq	%r14, 264(%rsp)
				movq	5136(%rsp), %rsi
				movq	5144(%rsp), %rdi
				movq	%rsi, 272(%rsp)
				movq	%rdi, 280(%rsp)
				movq	5152(%rsp), %r9
				movq	5160(%rsp), %r10
				movq	%r9, 288(%rsp)
				movq	%r10, 296(%rsp)
				movq	5168(%rsp), %rcx
				movq	5176(%rsp), %rbx
				movq	%rcx, 304(%rsp)
				movq	%rbx, 312(%rsp)
				movq	5184(%rsp), %r11
				movq	5192(%rsp), %r12
				movq	%r11, 320(%rsp)
				movq	%r12, 328(%rsp)
		.LVL77:
				movb	$18, 80(%rsp)
				movq	80(%rsp), %rax
				movq	88(%rsp), %rdx
				movq	%rax, 4944(%rsp)
				movq	%rdx, 4952(%rsp)
		.LBE163:
		.LBB164:
		.LBB165:
				pushq	%r12
				pushq	%r11
				pushq	%rbx
				pushq	%rcx
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%r14
				pushq	%r13
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	5192(%rsp)
				pushq	%rdx
				pushq	%rax
				call	_imp_printstring@PLT
		.LVL78:
		.LBE165:
		.LBE164:
		.LBB166:
  177     outbigreal(1, od sa(marginal ray, od field))
  178     print string("   ")
				movq	$2105376, 4945(%rsp)
				movq	$0, 4953(%rsp)
				movb	$0, 4961(%rsp)
				movw	$0, 4962(%rsp)
				movl	$0, 4964(%rsp)
				leaq	4968(%rsp), %rdi
				movl	$29, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$3, 4944(%rsp)
				movq	4944(%rsp), %rax
				movq	4952(%rsp), %rdx
				movq	%rax, 592(%rsp)
				movq	%rdx, 600(%rsp)
				movdqa	4960(%rsp), %xmm4
				movaps	%xmm4, 608(%rsp)
				movdqa	4976(%rsp), %xmm6
				movaps	%xmm6, 624(%rsp)
				movdqa	4992(%rsp), %xmm7
				movaps	%xmm7, 640(%rsp)
				movdqa	5008(%rsp), %xmm4
				movaps	%xmm4, 656(%rsp)
				movdqa	5024(%rsp), %xmm6
				movaps	%xmm6, 672(%rsp)
				movdqa	5040(%rsp), %xmm7
				movaps	%xmm7, 688(%rsp)
				movdqa	5056(%rsp), %xmm4
				movaps	%xmm4, 704(%rsp)
				movdqa	5072(%rsp), %xmm6
				movaps	%xmm6, 720(%rsp)
				movdqa	5088(%rsp), %xmm7
				movaps	%xmm7, 736(%rsp)
				movdqa	5104(%rsp), %xmm4
				movaps	%xmm4, 752(%rsp)
				movq	5120(%rsp), %r13
				movq	5128(%rsp), %r14
				movq	%r13, 768(%rsp)
				movq	%r14, 776(%rsp)
				movq	5136(%rsp), %rcx
				movq	5144(%rsp), %rbx
				movq	%rcx, 784(%rsp)
				movq	%rbx, 792(%rsp)
				movq	5152(%rsp), %rsi
				movq	5160(%rsp), %rdi
				movq	%rsi, 800(%rsp)
				movq	%rdi, 808(%rsp)
				movq	5168(%rsp), %r9
				movq	5176(%rsp), %r10
				movq	%r9, 816(%rsp)
				movq	%r10, 824(%rsp)
				movq	5184(%rsp), %r11
				movq	5192(%rsp), %r12
				movq	%r11, 832(%rsp)
				movq	%r12, 840(%rsp)
		.LVL79:
				movb	$3, 592(%rsp)
				movq	592(%rsp), %rax
				movq	600(%rsp), %rdx
				movq	%rax, 4944(%rsp)
				movq	%rdx, 4952(%rsp)
		.LBE166:
		.LBB167:
		.LBB168:
				addq	$256, %rsp
				pushq	%r12
				pushq	%r11
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%rbx
				pushq	%rcx
				pushq	%r14
				pushq	%r13
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	4936(%rsp)
				pushq	%rdx
				pushq	%rax
				call	_imp_printstring@PLT
		.LVL80:
		.LBE168:
		.LBE167:
		.LBB169:
		.LBB170:
				addq	$256, %rsp
				movl	$11, %esi
				movl	$5, %edi
				movsd	24(%rsp), %xmm0
				call	_imp_print@PLT
		.LVL81:
		.LBE170:
		.LBE169:
		.LBB171:
		.LBB172:
				call	_imp_newline@PLT
		.LVL82:
		.LBE172:
		.LBE171:
		.LBB173:
  179     print(od sa(marginal ray, sa field), 5, 11); newline
  180     print string("  Paraxial ray    ")
				movabsq	$7599931515074519072, %rax
				movabsq	$2314983667901951073, %rdx
				movq	%rax, 4433(%rsp)
				movq	%rdx, 4441(%rsp)
				movq	$8224, 4449(%rsp)
				movq	$0, 4457(%rsp)
				movb	$0, 4465(%rsp)
				movw	$0, 4466(%rsp)
				movl	$0, 4468(%rsp)
				leaq	4472(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$18, 4432(%rsp)
				movq	4432(%rsp), %rax
				movq	4440(%rsp), %rdx
				movq	%rax, 592(%rsp)
				movq	%rdx, 600(%rsp)
				movdqa	4448(%rsp), %xmm5
				movaps	%xmm5, 608(%rsp)
				movdqa	4464(%rsp), %xmm5
				movaps	%xmm5, 624(%rsp)
				movdqa	4480(%rsp), %xmm5
				movaps	%xmm5, 640(%rsp)
				movdqa	4496(%rsp), %xmm5
				movaps	%xmm5, 656(%rsp)
				movdqa	4512(%rsp), %xmm5
				movaps	%xmm5, 672(%rsp)
				movdqa	4528(%rsp), %xmm5
				movaps	%xmm5, 688(%rsp)
				movdqa	4544(%rsp), %xmm5
				movaps	%xmm5, 704(%rsp)
				movdqa	4560(%rsp), %xmm6
				movaps	%xmm6, 720(%rsp)
				movdqa	4576(%rsp), %xmm7
				movaps	%xmm7, 736(%rsp)
				movdqa	4592(%rsp), %xmm4
				movaps	%xmm4, 752(%rsp)
				movq	4608(%rsp), %r13
				movq	4616(%rsp), %r14
				movq	%r13, 768(%rsp)
				movq	%r14, 776(%rsp)
				movq	4624(%rsp), %rcx
				movq	4632(%rsp), %rbx
				movq	%rcx, 784(%rsp)
				movq	%rbx, 792(%rsp)
				movq	4640(%rsp), %rsi
				movq	4648(%rsp), %rdi
				movq	%rsi, 800(%rsp)
				movq	%rdi, 808(%rsp)
				movq	4656(%rsp), %r9
				movq	4664(%rsp), %r10
				movq	%r9, 816(%rsp)
				movq	%r10, 824(%rsp)
				movq	4672(%rsp), %r11
				movq	4680(%rsp), %r12
				movq	%r11, 832(%rsp)
				movq	%r12, 840(%rsp)
		.LVL83:
				movb	$18, 592(%rsp)
				movq	592(%rsp), %rax
				movq	600(%rsp), %rdx
				movq	%rax, 4432(%rsp)
				movq	%rdx, 4440(%rsp)
		.LBE173:
		.LBB174:
		.LBB175:
				pushq	%r12
				pushq	%r11
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%rbx
				pushq	%rcx
				pushq	%r14
				pushq	%r13
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	4680(%rsp)
				pushq	%rdx
				pushq	%rax
				call	_imp_printstring@PLT
		.LVL84:
		.LBE175:
		.LBE174:
		.LBB176:
  181     outbigreal(1, od sa(paraxial ray, od field))
  182     print string("   ")
				movq	$2105376, 4433(%rsp)
				movq	$0, 4441(%rsp)
				movb	$0, 4449(%rsp)
				movw	$0, 4450(%rsp)
				movl	$0, 4452(%rsp)
				leaq	4456(%rsp), %rdi
				movl	$29, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$3, 4432(%rsp)
				movq	4432(%rsp), %rax
				movq	4440(%rsp), %rdx
				movq	%rax, 1104(%rsp)
				movq	%rdx, 1112(%rsp)
				movdqa	4448(%rsp), %xmm5
				movaps	%xmm5, 1120(%rsp)
				movdqa	4464(%rsp), %xmm6
				movaps	%xmm6, 1136(%rsp)
				movdqa	4480(%rsp), %xmm7
				movaps	%xmm7, 1152(%rsp)
				movdqa	4496(%rsp), %xmm4
				movaps	%xmm4, 1168(%rsp)
				movdqa	4512(%rsp), %xmm5
				movaps	%xmm5, 1184(%rsp)
				movdqa	4528(%rsp), %xmm6
				movaps	%xmm6, 1200(%rsp)
				movdqa	4544(%rsp), %xmm7
				movaps	%xmm7, 1216(%rsp)
				movdqa	4560(%rsp), %xmm4
				movaps	%xmm4, 1232(%rsp)
				movdqa	4576(%rsp), %xmm5
				movaps	%xmm5, 1248(%rsp)
				movdqa	4592(%rsp), %xmm6
				movaps	%xmm6, 1264(%rsp)
				movq	4608(%rsp), %r13
				movq	4616(%rsp), %r14
				movq	%r13, 1280(%rsp)
				movq	%r14, 1288(%rsp)
				movq	4624(%rsp), %rcx
				movq	4632(%rsp), %rbx
				movq	%rcx, 1296(%rsp)
				movq	%rbx, 1304(%rsp)
				movq	4640(%rsp), %rsi
				movq	4648(%rsp), %rdi
				movq	%rsi, 1312(%rsp)
				movq	%rdi, 1320(%rsp)
				movq	4656(%rsp), %r9
				movq	4664(%rsp), %r10
				movq	%r9, 1328(%rsp)
				movq	%r10, 1336(%rsp)
				movq	4672(%rsp), %r11
				movq	4680(%rsp), %r12
				movq	%r11, 1344(%rsp)
				movq	%r12, 1352(%rsp)
		.LVL85:
				movb	$3, 1104(%rsp)
				movq	1104(%rsp), %rax
				movq	1112(%rsp), %rdx
				movq	%rax, 4432(%rsp)
				movq	%rdx, 4440(%rsp)
		.LBE176:
		.LBB177:
		.LBB178:
				addq	$256, %rsp
				pushq	%r12
				pushq	%r11
				pushq	%r10
				pushq	%r9
				pushq	%rdi
				pushq	%rsi
				pushq	%rbx
				pushq	%rcx
				pushq	%r14
				pushq	%r13
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	4424(%rsp)
				pushq	%rdx
				pushq	%rax
				call	_imp_printstring@PLT
		.LVL86:
		.LBE178:
		.LBE177:
		.LBB179:
		.LBB180:
				addq	$256, %rsp
		.LBE180:
		.LBE179:
  183     print(od sa(paraxial ray, sa field), 5, 11); newline
				movl	5472(%rsp), %eax
				subl	$1, %eax
				cltq
		.LVL87:
				salq	$4, %rax
		.LVL88:
		.LBB182:
		.LBB181:
				movl	$11, %esi
				movl	$5, %edi
				movsd	56(%rsp,%rax), %xmm0
				call	_imp_print@PLT
		.LVL89:
		.LBE181:
		.LBE182:
		.LBB183:
		.LBB184:
				call	_imp_newline@PLT
		.LVL90:
		.LBE184:
		.LBE183:
		.LBB185:
  184     print string("Longitudinal spherical aberration: ")
				movabsq	$7238819972123619148, %rax
				movabsq	$7525641560430571113, %rdx
				movq	%rax, 3921(%rsp)
				movq	%rdx, 3929(%rsp)
				movabsq	$6998712986469233253, %rax
				movabsq	$8028075772645369186, %rdx
				movq	%rax, 3937(%rsp)
				movq	%rdx, 3945(%rsp)
				movq	$2112110, 3953(%rsp)
				movq	$0, 3961(%rsp)
				movb	$0, 3969(%rsp)
				movw	$0, 3970(%rsp)
				movl	$0, 3972(%rsp)
				leaq	3976(%rsp), %rdi
				movl	$25, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$35, 3920(%rsp)
				movq	3920(%rsp), %rax
				movq	3928(%rsp), %rdx
				movq	%rax, 1104(%rsp)
				movq	%rdx, 1112(%rsp)
		.LVL91:
				movb	$35, 1104(%rsp)
		.LBE185:
		.LBB186:
		.LBB187:
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	4168(%rsp)
				pushq	1352(%rsp)
				pushq	1352(%rsp)
				call	_imp_printstring@PLT
		.LVL92:
		.LBE187:
		.LBE186:
		.LBB188:
		.LBB189:
				addq	$256, %rsp
				movl	$11, %esi
				movl	$5, %edi
				movsd	40(%rsp), %xmm0
				call	_imp_print@PLT
		.LVL93:
		.LBE189:
		.LBE188:
		.LBB190:
		.LBB191:
				call	_imp_newline@PLT
		.LVL94:
		.LBE191:
		.LBE190:
		.LBB192:
  185     print(aberr lspher, 5, 11); newline
  186     print string("    (Maximum permissible): ")
				movabsq	$8674299192025292832, %r12
				movabsq	$8243117977549237609, %r13
				movq	%r12, 3665(%rsp)
				movq	%r13, 3673(%rsp)
				movabsq	$7308324500363503981, %r14
				movl	$2112041, %r15d
				movq	%r14, 3681(%rsp)
				movq	%r15, 3689(%rsp)
				movb	$0, 3697(%rsp)
				movw	$0, 3698(%rsp)
				movl	$0, 3700(%rsp)
				leaq	3704(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$27, 3664(%rsp)
				movq	3664(%rsp), %rax
				movq	3672(%rsp), %rdx
				movq	%rax, 1360(%rsp)
				movq	%rdx, 1368(%rsp)
		.LVL95:
				movb	$27, 1360(%rsp)
		.LBE192:
		.LBB193:
		.LBB194:
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	3912(%rsp)
				pushq	1608(%rsp)
				pushq	1608(%rsp)
				call	_imp_printstring@PLT
		.LVL96:
		.LBE194:
		.LBE193:
		.LBB195:
		.LBB196:
				addq	$256, %rsp
				movl	$11, %esi
				movl	$5, %edi
				movsd	8(%rsp), %xmm0
				call	_imp_print@PLT
		.LVL97:
		.LBE196:
		.LBE195:
		.LBB197:
		.LBB198:
				call	_imp_newline@PLT
		.LVL98:
		.LBE198:
		.LBE197:
		.LBB199:
  187     print(max lspher, 5, 11); newline
  188     print string("Offense against sine condition (coma): ")
				movabsq	$2334398899846276687, %rax
				movabsq	$2338621024563717985, %rdx
				movq	%rax, 3409(%rsp)
				movq	%rdx, 3417(%rsp)
				movabsq	$7957688057378793843, %rax
				movabsq	$2891432385561520484, %rdx
				movq	%rax, 3425(%rsp)
				movq	%rdx, 3433(%rsp)
				movabsq	$9071148657373027, %rax
				movl	$0, %edx
				movq	%rax, 3441(%rsp)
				movq	%rdx, 3449(%rsp)
				movb	$0, 3457(%rsp)
				movw	$0, 3458(%rsp)
				movl	$0, 3460(%rsp)
				leaq	3464(%rsp), %rdi
				movl	$25, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$39, 3408(%rsp)
				movq	3408(%rsp), %rax
				movq	3416(%rsp), %rdx
				movq	%rax, 1616(%rsp)
				movq	%rdx, 1624(%rsp)
		.LVL99:
				movb	$39, 1616(%rsp)
		.LBE199:
		.LBB200:
		.LBB201:
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	3656(%rsp)
				pushq	1864(%rsp)
				pushq	1864(%rsp)
				call	_imp_printstring@PLT
		.LVL100:
		.LBE201:
		.LBE200:
		.LBB202:
		.LBB203:
				addq	$256, %rsp
				movl	$11, %esi
				movl	$5, %edi
				movsd	16(%rsp), %xmm0
				call	_imp_print@PLT
		.LVL101:
		.LBE203:
		.LBE202:
		.LBB204:
		.LBB205:
				call	_imp_newline@PLT
		.LVL102:
		.LBE205:
		.LBE204:
		.LBB206:
  189     print(aberr osc, 5, 11); newline
  190     print string("    (Maximum permissible): ")
				movq	%r12, 3153(%rsp)
				movq	%r13, 3161(%rsp)
				movq	%r14, 3169(%rsp)
				movq	%r15, 3177(%rsp)
				movb	$0, 3185(%rsp)
				movw	$0, 3186(%rsp)
				movl	$0, 3188(%rsp)
				leaq	3192(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$27, 3152(%rsp)
				movq	3152(%rsp), %rax
				movq	3160(%rsp), %rdx
				movq	%rax, 1872(%rsp)
				movq	%rdx, 1880(%rsp)
		.LVL103:
				movb	$27, 1872(%rsp)
		.LBE206:
		.LBB207:
		.LBB208:
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	3400(%rsp)
				pushq	2120(%rsp)
				pushq	2120(%rsp)
				call	_imp_printstring@PLT
		.LVL104:
		.LBE208:
		.LBE207:
		.LBB209:
		.LBB210:
				addq	$256, %rsp
				movl	$11, %esi
				movl	$5, %edi
				movsd	.LC24(%rip), %xmm0
				call	_imp_print@PLT
		.LVL105:
		.LBE210:
		.LBE209:
		.LBB211:
		.LBB212:
				call	_imp_newline@PLT
		.LVL106:
		.LBE212:
		.LBE211:
		.LBB213:
  191     print(max osc, 5, 11); newline
  192     print string("Axial chromatic aberration: ")
				movabsq	$7521891452501719105, %rax
				movabsq	$2333824980479733618, %rdx
				movq	%rax, 2897(%rsp)
				movq	%rdx, 2905(%rsp)
				movabsq	$7598805615454282337, %rax
				movl	$540700271, %edx
				movq	%rax, 2913(%rsp)
				movq	%rdx, 2921(%rsp)
				movb	$0, 2929(%rsp)
				movw	$0, 2930(%rsp)
				movl	$0, 2932(%rsp)
				leaq	2936(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$28, 2896(%rsp)
				movq	2896(%rsp), %rax
				movq	2904(%rsp), %rdx
				movq	%rax, 2128(%rsp)
				movq	%rdx, 2136(%rsp)
		.LVL107:
				movb	$28, 2128(%rsp)
		.LBE213:
		.LBB214:
		.LBB215:
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	3144(%rsp)
				pushq	2376(%rsp)
				pushq	2376(%rsp)
				call	_imp_printstring@PLT
		.LVL108:
		.LBE215:
		.LBE214:
		.LBB216:
		.LBB217:
				addq	$256, %rsp
				movl	$11, %esi
				movl	$5, %edi
				movsd	32(%rsp), %xmm0
				call	_imp_print@PLT
		.LVL109:
		.LBE217:
		.LBE216:
		.LBB218:
		.LBB219:
				call	_imp_newline@PLT
		.LVL110:
		.LBE219:
		.LBE218:
		.LBB220:
  193     print(aberr lchrom, 5, 11); newline
  194     print string("    (Maximum permissible): ")
				movq	%r12, 2641(%rsp)
				movq	%r13, 2649(%rsp)
				movq	%r14, 2657(%rsp)
				movq	%r15, 2665(%rsp)
				movb	$0, 2673(%rsp)
				movw	$0, 2674(%rsp)
				movl	$0, 2676(%rsp)
				leaq	2680(%rsp), %rdi
				movl	$27, %ecx
				movq	%rbp, %rax
				rep stosq
				movb	$27, 2640(%rsp)
				movq	2640(%rsp), %rax
				movq	2648(%rsp), %rdx
				movq	%rax, 2384(%rsp)
				movq	%rdx, 2392(%rsp)
		.LVL111:
				movb	$27, 2384(%rsp)
		.LBE220:
		.LBB221:
		.LBB222:
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2888(%rsp)
				pushq	2632(%rsp)
				pushq	2632(%rsp)
				call	_imp_printstring@PLT
		.LVL112:
		.LBE222:
		.LBE221:
		.LBB223:
		.LBB224:
				addq	$256, %rsp
				movl	$11, %esi
				movl	$5, %edi
				movsd	8(%rsp), %xmm0
				call	_imp_print@PLT
		.LVL113:
		.LBE224:
		.LBE223:
		.LBB225:
		.LBB226:
				call	_imp_newline@PLT
		.LVL114:
		.LBE226:
		.LBE225:
		.LBB227:
		.LBB228:
				movl	$0, %edi
				call	exit@PLT
		.LVL115:
		.LBE228:
		.LBE227:
		.LFE185:
				.section	.rodata.cst8,"aM",@progbits,8
				.align 8
		.LC0:
				.long	0
				.long	1072693248
				.align 8
		.LC1:
				.long	0
				.long	0
				.align 8
		.LC3:
				.long	0
				.long	1071644672
				.align 8
		.LC4:
				.long	0
				.long	1086178560
				.align 8
		.LC5:
				.long	2061584302
				.long	1085986292
				.align 8
		.LC6:
				.long	-446676599
				.long	1085907664
				.align 8
		.LC7:
				.long	-1443109011
				.long	1085736945
				.align 8
		.LC8:
				.long	-1752346657
				.long	1085576590
				.align 8
		.LC9:
				.long	274877907
				.long	1085472088
				.align 8
		.LC10:
				.long	481036337
				.long	1085338746
				.align 8
		.LC11:
				.long	-309237645
				.long	1085210876
				.align 8
		.LC12:
				.long	-858993459
				.long	1077611724
				.align 8
		.LC13:
				.long	2109687936
				.long	1073231901
				.align 8
		.LC14:
				.long	-858993459
				.long	1078971596
				.align 8
		.LC15:
				.long	171798692
				.long	1071686615
				.align 8
		.LC16:
				.long	2061584302
				.long	-1070551532
				.align 8
		.LC17:
				.long	-412316860
				.long	1069656571
				.align 8
		.LC18:
				.long	1058279942
				.long	1073339590
				.align 8
		.LC19:
				.long	-1717986918
				.long	1078090137
				.align 8
		.LC20:
				.long	-2061584302
				.long	1071141355
				.align 8
		.LC21:
				.long	1717986918
				.long	-1068267930
				.align 8
		.LC22:
				.long	0
				.long	1073741824
				.align 8
		.LC23:
				.long	-487743358
				.long	1058555463
				.align 8
		.LC24:
				.long	1202590843
				.long	1063549665
		.Letext0:
  195     print(max lchrom, 5, 11); newline
  196 %end %of %program
  163 Statements compiled
