         Edinburgh IMP77 Compiler - Version 8.4
    1 %realslong
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
		ARCSIN.7026:
		.LFB187:
    2
    3 %begin
		.LVL67:
				stwu 1,-5776(1)
				mflr 0
				stw 0,5780(1)
				stfd 27,5736(1)
				stfd 28,5744(1)
				stfd 29,5752(1)
				stfd 30,5760(1)
				stfd 31,5768(1)
				stw 30,5728(1)
				stw 31,5732(1)
				lwz 9,-28680(2)
				stw 9,5724(1)
				li 9,0
				addi 9,1,5776
				stw 9,5712(1)
    4     %integer a line, b line, c line, d line,
				bl _imp_initialise
		.LVL68:
    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))
				fdiv 27,27,26
				lfd 0,0(27)
				fdiv 0,0,27
		.LBE143:
		.LBE142:
   24     %end {cot}
   25     %real %fn arc sin(%real x)
		.LVL0:
				stwu 1,-32(1)
				mflr 0
				stw 0,36(1)
				stfd 30,16(1)
				stfd 31,24(1)
				fmr 30,1
		.LVL1:
		.LBB102:
		.LBB103:
				fmul 1,1,1
		.LVL2:
		.LBE103:
		.LBE102:
   26         %result = 2 * arc tan1(x / (1 + sqrt(1 - x^2)))
				lis 9,.LC8@ha
				lfd 31,.LC8@l(9)
		.LBB104:
		.LBB105:
				fsub 1,31,1
		.LVL3:
				bl sqrt
		.LVL4:
		.LBE105:
		.LBE104:
				fadd 1,1,31
		.LVL5:
		.LBB106:
		.LBB107:
				fdiv 1,30,1
		.LVL6:
				bl atan
		.LVL7:
		.LBE107:
		.LBE106:
   27     %end {arc sin}
				fadd 1,1,1
				lwz 0,36(1)
				mtlr 0
				lfd 30,16(1)
		.LVL8:
				lfd 31,24(1)
				addi 1,1,32
				blr
		.LFE187:
				.align 2
		TRACELINE.7055:
		.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
				lwz 9,276(31)
				lwz 10,272(31)
				cmpw 7,9,10
				beq 7,.L27
		.L11:
   36             %if radius of curvature # 0 %then %start
				lfd 0,.LC10@l(28)
				fcmpu 7,31,0
				beq 7,.L12
   37                 %if object distance = 0 %then %start
				lfd 0,224(31)
				lfd 12,.LC10@l(28)
				fcmpu 7,0,12
				bne 7,.L13
   38                     axis slope angle = 0
   39                     iang sin = ray height / radius of curvature
				lfd 0,208(31)
				fdiv 12,0,31
		.LVL27:
   40                 %finish %else                                         %c
   41                     iang sin = ((object distance -                    %c
   42                         radius of curvature) / radius of curvature) * %c
   43                         axis slope angle
				lfd 10,216(31)
				fsub 12,0,31
				fdiv 31,12,31
				fmul 12,31,10
		.LVL30:
   44                 rang sin = (from index / to index) * iang sin
				lfd 0,200(31)
				lfd 11,192(31)
				fdiv 0,0,11
				fmul 0,0,12
		.LVL28:
				lfd 11,200(31)
				lfd 9,192(31)
				fdiv 11,11,9
				fmul 12,11,12
		.LVL31:
   45                 old axis slope angle = axis slope angle
   46                 axis slope angle = axis slope angle +                 %c
				lfd 31,.LC10@l(28)
				fadd 31,12,31
				fsub 31,31,0
				stfd 31,216(31)
				b .L14
		.LVL29:
		.L13:
				fadd 31,10,12
				fsub 31,31,12
				stfd 31,216(31)
   47                     iang sin - rang sin
   48                 %if object distance # 0 %then                         %c
   49                     ray height = object distance * old axis slope angle
				fmul 0,0,10
		.LVL32:
				stfd 0,208(31)
		.LVL33:
		.L14:
   50                 object distance = ray height / axis slope angle
				lfd 0,208(31)
				fdiv 31,0,31
				stfd 31,224(31)
				b .L20
		.L12:
   51             %else
   52                 object distance = object distance * (to index / from index)
				lfd 11,192(31)
				lfd 0,200(31)
				fdiv 12,11,0
				lfd 10,224(31)
				fmul 12,10,12
				stfd 12,224(31)
   53                 axis slope angle = axis slope angle * (from index / to index)
				fdiv 0,0,11
				lfd 12,216(31)
				fmul 0,12,0
				stfd 0,216(31)
				b .L20
		.L17:
		.LVL34:
		.LBB136:
		.LBB137:
				lfd 1,216(31)
				bl sin
		.LVL35:
		.LBE137:
		.LBE136:
   54             %finish
   55         %else
   56             %if radius of curvature # 0 %then %start
				lis 28,.LC10@ha
				lfd 0,.LC10@l(28)
				fcmpu 7,31,0
				beq 7,.L16
   57                 %if object distance = 0 %then %start
				lfd 30,224(31)
				fcmpu 7,30,0
				bne 7,.L17
   58                     axis slope angle = 0
				stfd 0,216(31)
   59                     iang sin = ray height / radius of curvature
				lfd 0,208(31)
				fdiv 31,0,31
		.LVL54:
				b .L18
		.LVL55:
		.L16:
		.LBB146:
		.LBB147:
				lfd 1,216(31)
				bl sin
		.LVL56:
		.LBE147:
		.LBE146:
   60                 %finish %else %c
   61                     iang sin = ((object distance -                    %c
   62                         radius of curvature) / radius of curvature) * %c
   63                         sin(axis slope angle)
				fsub 30,30,31
				fdiv 31,30,31
				fmul 31,31,1
		.LVL36:
		.L18:
   64                 iang = arc sin(iang sin)
				fmr 1,31
				bl ARCSIN.7026
		.LVL37:
   65                 rang sin = (from index / to index) * iang sin
				lfd 0,200(31)
				lfd 12,192(31)
				fdiv 1,0,12
		.LVL38:
   66                 old axis slope angle = axis slope angle
   67                 axis slope angle = axis slope angle +                 %c
				lfd 0,216(31)
				fadd 30,1,0
				fmul 1,1,31
		.LVL39:
				bl ARCSIN.7026
		.LVL40:
				fsub 31,30,1
		.LVL41:
				addi 4,1,16
				addi 3,1,24
				fmr 1,31
				bl sincos
		.LVL42:
				lfd 26,16(1)
				lfd 27,24(1)
				stfd 31,216(31)
   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)
				lis 24,.LC13@ha
				b .L9
		.LVL14:
		.L26:
		.LBE135:
		.LBE134:
				lfd 31,232(31)
		.LVL43:
				lfd 1,.LC13@l(24)
		.LBB138:
		.LBB139:
				fmul 1,30,1
		.LVL44:
				bl sin
		.LVL45:
				fmr 28,1
		.LVL46:
		.LBE139:
		.LBE138:
		.LBB140:
		.LBB141:
				fmr 1,30
		.LVL47:
				bl sin
		.LVL48:
		.LBE141:
		.LBE140:
		.LBB142:
		.LBB143:
				fadd 31,31,31
		.LVL49:
		.LBB144:
		.LBB145:
				fmul 28,28,28
		.LBE145:
		.LBE144:
				fmul 31,31,28
		.LVL50:
   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
				fmul 1,31,1
				fmul 0,0,1
				fadd 0,0,31
				stfd 0,224(31)
		.L15:
		.L19:
		.LVL51:
		.L20:
		.LBE152:
		.LBE155:
   80                     sin(old axis slope angle + iang)) *               %c
   81                     cot(axis slope angle)) + sagitta
   82             %else
   83                 rang = -arcsin((from index / to index) *              %c
				lfd 0,200(31)
				lfd 12,192(31)
				fdiv 0,0,12
				fmul 1,0,1
				bl ARCSIN.7026
		.LVL57:
				fmr 30,1
		.LVL58:
		.LBB148:
		.LBB149:
				bl cos
		.LVL59:
				fmr 31,1
		.LVL60:
		.LBE149:
		.LBE148:
		.LBB150:
		.LBB151:
				lfd 1,216(31)
				bl cos
		.LVL61:
		.LBE151:
		.LBE150:
   84                     sin(axis slope angle))
   85                 object distance = object distance * ((to index *      %c
				lfd 0,192(31)
				fmul 31,31,0
				lfd 0,200(31)
				fmul 1,1,0
				fdiv 31,31,1
				lfd 0,224(31)
				fmul 31,0,31
				stfd 31,224(31)
   86                     cos(-rang)) / (from index *                       %c
   87                     cos(axis slope angle)))
   88                 axis slope angle = -rang
				stfd 30,216(31)
				b .L20
		.L8:
		.LVL62:
		.L25:
				lwz 24,1328(1)
				lwz 27,1340(1)
				lwz 28,1344(1)
				lwz 29,1348(1)
		.LVL63:
		.L3:
		.LBE153:
		.LBE156:
		.LBE133:
   89             %finish
   90         %finish
   91     %end {transit surface}
   92     %routine trace line(%integer line, %real ray h)
		.LVL9:
				stwu 1,-1408(1)
				mflr 0
				stw 0,1412(1)
				stfd 26,1360(1)
				stfd 27,1368(1)
				stfd 28,1376(1)
				stfd 29,1384(1)
				stfd 30,1392(1)
				stfd 31,1400(1)
				stw 25,1332(1)
				stw 26,1336(1)
				stw 30,1352(1)
				stw 31,1356(1)
				mr 25,3
				mr 31,11
				lwz 9,-28680(2)
				stw 9,1324(1)
				li 9,0
   93         %integer i
   94         object distance = 0
				lis 9,.LC10@ha
				lfd 0,.LC10@l(9)
				stfd 0,224(11)
   95         ray height = ray h
				stfd 1,208(11)
   96         from index = 1
				lis 9,.LC8@ha
				lfd 0,.LC8@l(9)
				stfd 0,200(11)
		.LBB133:
   97         %for i = 1, 1, current surfaces %cycle
   98             radius of curvature = test case(i, curvature radius)
				lwz 26,268(11)
		.LVL10:
				slwi 9,30,2
				lwz 10,264(31)
				add 10,9,10
				addi 10,10,7
				slwi 10,10,3
				lfdx 31,31,10
				stfd 31,232(31)
   99             to index = test case(i, index of refraction)
				addic. 9,26,-1
				blt 0,.L26
		.LVL11:
		.L4:
				lis 9,_imp_current_file@ha
				lwz 4,_imp_current_file@l(9)
				cmpwi 7,4,0
				beq 7,.L5
				addi 3,1,812
		.LVL15:
				bl _imp_c2istr
		.LVL16:
		.L6:
				lis 9,_imp_current_line@ha
				lwz 30,_imp_current_line@l(9)
				cmpwi 7,30,0
				bne 7,.L7
				li 30,99
		.L7:
				lis 4,.LC12@ha
				la 4,.LC12@l(4)
				addi 3,1,1068
				bl _imp_c2istr
		.LVL17:
				li 5,256
				addi 4,1,812
				addi 3,1,288
				bl memcpy
		.LVL18:
				li 5,256
				addi 4,1,1068
				addi 3,1,32
				bl memcpy
		.LVL19:
				li 8,0
				li 7,1
				li 6,5
				addi 5,1,32
				mr 4,30
				addi 3,1,288
				bl _signal_event
		.LVL20:
				b .L4
		.LVL21:
		.L5:
		.LBB154:
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 3,1,1068
		.LVL22:
				bl memcpy
		.LVL23:
				li 5,256
				addi 4,1,1068
				addi 3,1,556
				bl memcpy
		.LVL24:
		.LBE154:
				li 5,256
				addi 4,1,556
				addi 3,1,812
				bl memcpy
		.LVL25:
				b .L6
		.LVL26:
		.L27:
		.LBB155:
		.LBB152:
				lwz 10,260(31)
				add 9,9,10
				addi 9,9,7
				slwi 9,9,3
				lfdx 12,31,9
				stfd 12,192(31)
  100             %if to index > 1 %then                                     %c
				lis 27,.LC8@ha
				la 27,.LC8@l(27)
				lfd 29,0(27)
				fcmpu 7,12,29
				cror 30,28,30
				beq 7,.L10
  101                 to index = to index + ((spectral line(d line) -        %c
				addi 25,25,-1
		.LVL12:
				slwi 25,25,3
		.LVL13:
		.LBB134:
		.LBB135:
				lwz 9,256(31)
				addi 9,9,-1
				slwi 9,9,3
				lfdx 0,31,9
				lfdx 11,31,25
				fsub 0,0,11
				lwz 9,252(31)
				addi 9,9,-1
				slwi 10,9,3
				lwz 9,248(31)
				addi 9,9,-1
				slwi 9,9,3
				lfdx 11,31,10
				lfdx 10,31,9
				fsub 11,11,10
				fdiv 0,0,11
				lfd 11,0(27)
				fsub 11,12,11
				slwi 9,30,2
				lwz 10,244(31)
				add 9,9,10
				addi 9,9,7
				slwi 9,9,3
				lfdx 10,31,9
				fdiv 11,11,10
				fmul 0,0,11
				fadd 0,0,12
				stfd 0,192(31)
		.L10:
		.LBB156:
		.LBB153:
  102                     spectral line(line)) /                             %c
				cmpwi 7,26,0
				beq 7,.L3
				stw 24,1328(1)
				stw 27,1340(1)
				stw 28,1344(1)
				stw 29,1348(1)
				li 30,0
				cmpw 7,26,29
				beq 7,.L25
		.LVL52:
		.L9:
  103                     (spectral line(c line) - spectral line(f line))) * %c
				addi 29,30,1
		.LVL53:
  104                     ((test case(i, index of refraction) - 1.0) /       %c
  105                     test case(i, dispersion))
  106             transit surface
  107             from index = to index
				lfd 0,192(31)
				stfd 0,200(31)
  108             %if i < current surfaces %then                             %c
				lwz 9,268(31)
				cmpw 7,29,9
				bge 7,.L21
  109                 object distance = object distance -                    %c
				slwi 30,30,2
				lwz 9,240(31)
				add 30,30,9
				addi 30,30,7
				slwi 30,30,3
				lfdx 0,31,30
				lfd 12,224(31)
				fsub 0,12,0
				stfd 0,224(31)
		.L21:
				mr 30,29
  110                     test case(i, edge thickness)
  111         %repeat
  112     %end {trace line}
  113     %comment END GLOBAL DECLARATONS
				lwz 9,1324(1)
				lwz 10,-28680(2)
				xor. 9,9,10
				li 10,0
				bne 0,.L28
				lwz 0,1412(1)
				mtlr 0
				lwz 25,1332(1)
				lwz 26,1336(1)
		.LVL64:
				lwz 30,1352(1)
				lwz 31,1356(1)
				lfd 26,1360(1)
				lfd 27,1368(1)
				lfd 28,1376(1)
				lfd 29,1384(1)
				lfd 30,1392(1)
				lfd 31,1400(1)
				addi 1,1,1408
				blr
		.LVL65:
		.L28:
				stw 24,1328(1)
				stw 27,1340(1)
				stw 28,1344(1)
				stw 29,1348(1)
				bl __stack_chk_fail
		.LVL66:
		.LFE190:
				.align 2
				.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
				li 8,3
				stw 8,5684(1)
				li 10,6
				stw 10,5680(1)
		.LVL70:
				lis 10,.LC15@ha
				lfd 0,.LC15@l(10)
				stfd 0,5432(1)
  118     spectral line(a line)       = 7621.0
				li 9,4
				stw 9,5688(1)
		.LVL69:
  119     spectral line(b line)       = 6869.955
				lis 10,.LC17@ha
				lfd 0,.LC17@l(10)
				stfd 0,5440(1)
  120     spectral line(c line)       = 6562.8160
				lis 10,.LC18@ha
				lfd 0,.LC18@l(10)
				stfd 0,5448(1)
  121     spectral line(d line)       = 5895.944
				lis 10,.LC19@ha
				lfd 0,.LC19@l(10)
				stfd 0,5456(1)
  122     spectral line(e line)       = 5269.557
				lis 10,.LC20@ha
				lfd 0,.LC20@l(10)
				stfd 0,5464(1)
  123     spectral line(f line)       = 4861.344
				lis 10,.LC21@ha
				lfd 0,.LC21@l(10)
				stfd 0,5472(1)
  124     spectral line(g prime line) = 4340.477
				lis 10,.LC22@ha
				lfd 0,.LC22@l(10)
				stfd 0,5480(1)
  125     spectral line(h line)       = 3968.494
				lis 10,.LC23@ha
				lfd 0,.LC23@l(10)
				stfd 0,5488(1)
  126     %comment  Initialise the test case array
  127     current surfaces = 4
				stw 9,5700(1)
  128     curvature radius = 1; index of refraction = 2; dispersion = 3
				li 10,1
				stw 10,5696(1)
  129         edge thickness = 4
				li 10,2
				stw 10,5692(1)
				stw 9,5672(1)
				lis 9,.LC24@ha
				lfd 0,.LC24@l(9)
				stfd 0,5496(1)
  130     test case(1, curvature radius)    =   27.05
				stw 8,5676(1)
  131     test case(1, index of refraction) =    1.5137
				lis 9,.LC25@ha
				lfd 0,.LC25@l(9)
				stfd 0,5504(1)
  132     test case(1, dispersion)          =   63.6
				lis 9,.LC26@ha
				lfd 0,.LC26@l(9)
				stfd 0,5512(1)
  133     test case(1, edge thickness)      =    0.52
				lis 9,.LC27@ha
				lfd 0,.LC27@l(9)
				stfd 0,5520(1)
  134     test case(2, curvature radius)    =  -16.68
				lis 9,.LC28@ha
				lfd 10,.LC28@l(9)
				stfd 10,5528(1)
  135     test case(2, index of refraction) =    1.0
				lis 9,.LC8@ha
				lfd 12,.LC8@l(9)
				stfd 12,5536(1)
  136     test case(2, dispersion)          =    0.0
				lis 9,.LC10@ha
				lfd 0,.LC10@l(9)
				stfd 0,5544(1)
  137     test case(2, edge thickness)      =    0.138
				lis 9,.LC29@ha
				lfd 11,.LC29@l(9)
				stfd 11,5552(1)
  138     test case(3, curvature radius)    =  -16.68
				stfd 10,5560(1)
  139     test case(3, index of refraction) =    1.6164
				lis 9,.LC30@ha
				lfd 11,.LC30@l(9)
				stfd 11,5568(1)
  140     test case(3, dispersion)          =   36.7
				lis 9,.LC31@ha
				lfd 11,.LC31@l(9)
				stfd 11,5576(1)
  141     test case(3, edge thickness)      =    0.38
				lis 9,.LC32@ha
				lfd 11,.LC32@l(9)
				stfd 11,5584(1)
  142     test case(4, curvature radius)    =  -78.1
				lis 9,.LC33@ha
				lfd 11,.LC33@l(9)
				stfd 11,5592(1)
  143     test case(4, index of refraction) =    1.0
				stfd 12,5600(1)
  144     test case(4, dispersion)          =    0.0
				stfd 0,5608(1)
  145     test case(4, edge thickness)      =    0.0
				stfd 0,5616(1)
		.LVL71:
  146     marginal ray = 1; paraxial ray = 2
  147     od field = 1; sa field = 2
				stw 10,5704(1)
		.LVL72:
		.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)
				lis 9,.LC34@ha
				lfd 31,.LC34@l(9)
		.L30:
				addi 11,1,5432
				fmr 1,31
				lwz 3,5688(1)
				bl TRACELINE.7055
		.LVL73:
  154             od sa(paraxial, od field) = object distance
				lwz 10,5708(1)
				addi 9,10,-1
				slwi 9,9,4
				addi 8,1,5728
				add 9,8,9
				lfd 0,5656(1)
				stfd 0,-5448(9)
  155             od sa(paraxial, sa field) = axis slope angle
				lfd 0,5648(1)
				stfd 0,-5440(9)
		.LDL1:
  156         %repeat
  157         %comment Trace marginal ray in C
				li 10,0
				cmpwi 7,10,2
				bne 7,.L30
		.L31:
		.LBE158:
				li 9,1
				stw 9,5708(1)
  158         paraxial = marginal ray
				addi 10,10,1
				stw 10,5708(1)
  159         trace line(c line, clear aperture / 2)
				lis 9,.LC34@ha
				lfd 31,.LC34@l(9)
				addi 11,1,5432
				fmr 1,31
				lwz 3,5684(1)
				bl TRACELINE.7055
		.LVL74:
  160         od cline = object distance
				lfd 29,5656(1)
		.LVL75:
  161         %comment Trace marginal ray in F
  162         trace line(f line, clear aperture / 2)
				addi 11,1,5432
				fmr 1,31
				lwz 3,5680(1)
				bl TRACELINE.7055
		.LVL76:
  163         od fline = object distance
  164         aberr lspher = od sa(paraxial ray, od field) -               %c
				lwz 31,5704(1)
				addi 31,31,-1
				slwi 31,31,4
				addi 9,1,5728
				add 31,9,31
				lfd 31,-5448(31)
				lfd 30,280(1)
				fsub 27,31,30
		.LVL77:
  165             od sa(marginal ray, od field)
  166         aberr osc = 1 - ((od sa(paraxial ray, od field) *            %c
				lfd 28,288(1)
		.LVL78:
		.LBB159:
		.LBB160:
				fmr 1,28
				bl sin
		.LVL79:
		.LBE160:
		.LBE159:
				lfd 0,-5440(31)
				fmul 31,31,0
				fmul 30,30,1
				fdiv 31,31,30
				lis 9,.LC8@ha
				lfd 0,.LC8@l(9)
				fsub 31,0,31
		.LVL80:
  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
				lfd 0,5656(1)
		.LVL81:
				fsub 29,0,29
		.LVL82:
		.LBB161:
		.LBB162:
				fmul 1,1,1
		.LBE162:
		.LBE161:
  171         max lspher = 0.0000926 / sin(od sa(marginal ray, sa field)) ^ 2
				lis 9,.LC36@ha
				lfd 30,.LC36@l(9)
				fdiv 30,30,1
		.LDL2:
		.LVL83:
		.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    ")
				lis 31,.LANCHOR0@ha
				la 31,.LANCHOR0@l(31)
				li 5,256
				addi 4,31,256
				addi 3,1,5176
				bl memcpy
		.LVL84:
				li 5,256
				addi 4,1,5176
				addi 3,1,312
				bl memcpy
		.LVL85:
				li 5,256
				addi 4,1,312
				addi 3,1,5176
				bl memcpy
		.LVL86:
		.LBE163:
		.LBB164:
		.LBB165:
				li 5,256
				addi 4,1,5176
				addi 3,1,16
				bl memcpy
		.LVL87:
				addi 3,1,16
				bl _imp_printstring
		.LVL88:
		.LBE165:
		.LBE164:
		.LBB166:
  177     outbigreal(1, od sa(marginal ray, od field))
  178     print string("   ")
				addi 30,31,512
				li 5,256
				mr 4,30
				addi 3,1,4920
				bl memcpy
		.LVL89:
				li 5,256
				addi 4,1,4920
				addi 3,1,568
				bl memcpy
		.LVL90:
				li 5,256
				addi 4,1,568
				addi 3,1,4920
				bl memcpy
		.LVL91:
		.LBE166:
		.LBB167:
		.LBB168:
				li 5,256
				addi 4,1,4920
				addi 3,1,16
				bl memcpy
		.LVL92:
				addi 3,1,16
				bl _imp_printstring
		.LVL93:
		.LBE168:
		.LBE167:
		.LBB169:
		.LBB170:
				li 4,11
				li 3,5
				fmr 1,28
				bl _imp_print
		.LVL94:
		.LBE170:
		.LBE169:
		.LBB171:
		.LBB172:
				bl _imp_newline
		.LVL95:
		.LBE172:
		.LBE171:
		.LBB173:
  179     print(od sa(marginal ray, sa field), 5, 11); newline
  180     print string("  Paraxial ray    ")
				li 5,256
				addi 4,31,768
				addi 3,1,4664
				bl memcpy
		.LVL96:
				li 5,256
				addi 4,1,4664
				addi 3,1,824
				bl memcpy
		.LVL97:
				li 5,256
				addi 4,1,824
				addi 3,1,4664
				bl memcpy
		.LVL98:
		.LBE173:
		.LBB174:
		.LBB175:
				li 5,256
				addi 4,1,4664
				addi 3,1,16
				bl memcpy
		.LVL99:
				addi 3,1,16
				bl _imp_printstring
		.LVL100:
		.LBE175:
		.LBE174:
		.LBB176:
  181     outbigreal(1, od sa(paraxial ray, od field))
  182     print string("   ")
				li 5,256
				mr 4,30
				addi 3,1,4408
				bl memcpy
		.LVL101:
				li 5,256
				addi 4,1,4408
				addi 3,1,1080
				bl memcpy
		.LVL102:
				li 5,256
				addi 4,1,1080
				addi 3,1,4408
				bl memcpy
		.LVL103:
		.LBE176:
		.LBB177:
		.LBB178:
				li 5,256
				addi 4,1,4408
				addi 3,1,16
				bl memcpy
		.LVL104:
				addi 3,1,16
				bl _imp_printstring
		.LVL105:
		.LBE178:
		.LBE177:
  183     print(od sa(paraxial ray, sa field), 5, 11); newline
				lwz 9,5704(1)
				addi 9,9,-1
		.LVL106:
				slwi 9,9,4
		.LVL107:
				addi 10,1,5728
				add 9,10,9
		.LBB179:
		.LBB180:
				li 4,11
				li 3,5
				lfd 1,-5440(9)
				bl _imp_print
		.LVL108:
		.LBE180:
		.LBE179:
		.LBB181:
		.LBB182:
				bl _imp_newline
		.LVL109:
		.LBE182:
		.LBE181:
		.LBB183:
  184     print string("Longitudinal spherical aberration: ")
				li 5,256
				addi 4,31,1024
				addi 3,1,4152
				bl memcpy
		.LVL110:
				li 5,256
				addi 4,1,4152
				addi 3,1,1336
				bl memcpy
		.LVL111:
				li 5,256
				addi 4,1,1336
				addi 3,1,4152
				bl memcpy
		.LVL112:
		.LBE183:
		.LBB184:
		.LBB185:
				li 5,256
				addi 4,1,4152
				addi 3,1,16
				bl memcpy
		.LVL113:
				addi 3,1,16
				bl _imp_printstring
		.LVL114:
		.LBE185:
		.LBE184:
		.LBB186:
		.LBB187:
				li 4,11
				li 3,5
				fmr 1,27
				bl _imp_print
		.LVL115:
		.LBE187:
		.LBE186:
		.LBB188:
		.LBB189:
				bl _imp_newline
		.LVL116:
		.LBE189:
		.LBE188:
		.LBB190:
  185     print(aberr lspher, 5, 11); newline
  186     print string("    (Maximum permissible): ")
				addi 30,31,1280
				li 5,256
				mr 4,30
				addi 3,1,3896
				bl memcpy
		.LVL117:
				li 5,256
				addi 4,1,3896
				addi 3,1,1592
				bl memcpy
		.LVL118:
				li 5,256
				addi 4,1,1592
				addi 3,1,3896
				bl memcpy
		.LVL119:
		.LBE190:
		.LBB191:
		.LBB192:
				li 5,256
				addi 4,1,3896
				addi 3,1,16
				bl memcpy
		.LVL120:
				addi 3,1,16
				bl _imp_printstring
		.LVL121:
		.LBE192:
		.LBE191:
		.LBB193:
		.LBB194:
				li 4,11
				li 3,5
				fmr 1,30
				bl _imp_print
		.LVL122:
		.LBE194:
		.LBE193:
		.LBB195:
		.LBB196:
				bl _imp_newline
		.LVL123:
		.LBE196:
		.LBE195:
		.LBB197:
  187     print(max lspher, 5, 11); newline
  188     print string("Offense against sine condition (coma): ")
				li 5,256
				addi 4,31,1536
				addi 3,1,3640
				bl memcpy
		.LVL124:
				li 5,256
				addi 4,1,3640
				addi 3,1,1848
				bl memcpy
		.LVL125:
				li 5,256
				addi 4,1,1848
				addi 3,1,3640
				bl memcpy
		.LVL126:
		.LBE197:
		.LBB198:
		.LBB199:
				li 5,256
				addi 4,1,3640
				addi 3,1,16
				bl memcpy
		.LVL127:
				addi 3,1,16
				bl _imp_printstring
		.LVL128:
		.LBE199:
		.LBE198:
		.LBB200:
		.LBB201:
				li 4,11
				li 3,5
				fmr 1,31
				bl _imp_print
		.LVL129:
		.LBE201:
		.LBE200:
		.LBB202:
		.LBB203:
				bl _imp_newline
		.LVL130:
		.LBE203:
		.LBE202:
		.LBB204:
  189     print(aberr osc, 5, 11); newline
  190     print string("    (Maximum permissible): ")
				li 5,256
				mr 4,30
				addi 3,1,3384
				bl memcpy
		.LVL131:
				li 5,256
				addi 4,1,3384
				addi 3,1,2104
				bl memcpy
		.LVL132:
				li 5,256
				addi 4,1,2104
				addi 3,1,3384
				bl memcpy
		.LVL133:
		.LBE204:
		.LBB205:
		.LBB206:
				li 5,256
				addi 4,1,3384
				addi 3,1,16
				bl memcpy
		.LVL134:
				addi 3,1,16
				bl _imp_printstring
		.LVL135:
		.LBE206:
		.LBE205:
		.LBB207:
		.LBB208:
				li 4,11
				li 3,5
				lis 9,.LC37@ha
				lfd 1,.LC37@l(9)
				bl _imp_print
		.LVL136:
		.LBE208:
		.LBE207:
		.LBB209:
		.LBB210:
				bl _imp_newline
		.LVL137:
		.LBE210:
		.LBE209:
		.LBB211:
  191     print(max osc, 5, 11); newline
  192     print string("Axial chromatic aberration: ")
				li 5,256
				addi 4,31,1792
				addi 3,1,3128
				bl memcpy
		.LVL138:
				li 5,256
				addi 4,1,3128
				addi 3,1,2360
				bl memcpy
		.LVL139:
				li 5,256
				addi 4,1,2360
				addi 3,1,3128
				bl memcpy
		.LVL140:
		.LBE211:
		.LBB212:
		.LBB213:
				li 5,256
				addi 4,1,3128
				addi 3,1,16
				bl memcpy
		.LVL141:
				addi 3,1,16
				bl _imp_printstring
		.LVL142:
		.LBE213:
		.LBE212:
		.LBB214:
		.LBB215:
				li 4,11
				li 3,5
				fmr 1,29
				bl _imp_print
		.LVL143:
		.LBE215:
		.LBE214:
		.LBB216:
		.LBB217:
				bl _imp_newline
		.LVL144:
		.LBE217:
		.LBE216:
		.LBB218:
  193     print(aberr lchrom, 5, 11); newline
  194     print string("    (Maximum permissible): ")
				li 5,256
				mr 4,30
				addi 3,1,2872
				bl memcpy
		.LVL145:
				li 5,256
				addi 4,1,2872
				addi 3,1,2616
				bl memcpy
		.LVL146:
				li 5,256
				addi 4,1,2616
				addi 3,1,2872
				bl memcpy
		.LVL147:
		.LBE218:
		.LBB219:
		.LBB220:
				li 5,256
				addi 4,1,2872
				addi 3,1,16
				bl memcpy
		.LVL148:
				addi 3,1,16
				bl _imp_printstring
		.LVL149:
		.LBE220:
		.LBE219:
		.LBB221:
		.LBB222:
				li 4,11
				li 3,5
				fmr 1,30
				bl _imp_print
		.LVL150:
		.LBE222:
		.LBE221:
		.LBB223:
		.LBB224:
				bl _imp_newline
		.LVL151:
		.LBE224:
		.LBE223:
		.LBB225:
		.LBB226:
				li 3,0
				bl exit
		.LVL152:
		.LBE226:
		.LBE225:
		.LFE185:
				.section	.rodata
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	19
				.string	"test-new/fbench.imp"
				.zero	235
		.LC1:
				.byte	18
				.string	"  Marginal ray    "
				.zero	236
		.LC2:
				.byte	3
				.string	"   "
				.zero	251
		.LC3:
				.byte	18
				.string	"  Paraxial ray    "
				.zero	236
		.LC4:
				.byte	35
				.string	"Longitudinal spherical aberration: "
				.zero	219
		.LC5:
				.byte	27
				.string	"    (Maximum permissible): "
				.zero	227
		.LC6:
				.byte	39
				.string	"Offense against sine condition (coma): "
				.zero	215
		.LC7:
				.byte	28
				.string	"Axial chromatic aberration: "
				.zero	226
				.section	.rodata.cst8,"aM",@progbits,8
				.align 3
		.LC8:
				.long	1072693248
				.long	0
		.LC10:
				.long	0
				.long	0
		.LC13:
				.long	1071644672
				.long	0
		.LC15:
				.long	1086178560
				.long	0
		.LC17:
				.long	1085986292
				.long	2061584302
		.LC18:
				.long	1085907664
				.long	-446676599
		.LC19:
				.long	1085736945
				.long	-1443109011
		.LC20:
				.long	1085576590
				.long	-1752346657
		.LC21:
				.long	1085472088
				.long	274877907
		.LC22:
				.long	1085338746
				.long	481036337
		.LC23:
				.long	1085210876
				.long	-309237645
		.LC24:
				.long	1077611724
				.long	-858993459
		.LC25:
				.long	1073231901
				.long	2109687936
		.LC26:
				.long	1078971596
				.long	-858993459
		.LC27:
				.long	1071686615
				.long	171798692
		.LC28:
				.long	-1070551532
				.long	2061584302
		.LC29:
				.long	1069656571
				.long	-412316860
		.LC30:
				.long	1073339590
				.long	1058279942
		.LC31:
				.long	1078090137
				.long	-1717986918
		.LC32:
				.long	1071141355
				.long	-2061584302
		.LC33:
				.long	-1068267930
				.long	1717986918
		.LC34:
				.long	1073741824
				.long	0
		.LC36:
				.long	1058555463
				.long	-487743358
		.LC37:
				.long	1063549665
				.long	1202590843
				.section	.rodata.str1.4,"aMS",@progbits,1
				.align 2
		.LC12:
				.string	"Illegal cycle I = 1, 1, CURRENTSURFACES"
				.section	".text"
		.Letext0:
  195     print(max lchrom, 5, 11); newline
  196 %end %of %program
  163 Statements compiled
