// File: Eba-M[P]E3DC-Control/SunriseCalc.cpp
// Function: SunriseCalc::updateCalc()
void SunriseCalc::updateCalc()
{
  float julian = toJulian(year, month, day);

  float julianCentury = (julian - 2451545.0) / 36525;

  float geomMeanLongSun = fmod(280.46646 + julianCentury * (36000.76983 + julianCentury * 0.0003032), 360.0);
  float geomMeanAnomSun = 357.52911 + julianCentury * (35999.05029 - 0.0001537 * julianCentury);
  float eccentEarthOrbit = 0.016708634-julianCentury*(0.000042037+0.0000001267*julianCentury);
  float meanObliqCorr = 23+(26+((21.448-julianCentury*(46.815+julianCentury*(0.00059-julianCentury*0.001813))))/60)/60;
  float obliqCorr = meanObliqCorr+0.00256*cos(deg2rad(125.04-1934.136*julianCentury));
  float varY = tan(deg2rad(obliqCorr/2))*tan(deg2rad(obliqCorr/2));
  float eqOfTime = 4*rad2deg(varY*sin(2*deg2rad(geomMeanLongSun))-2*eccentEarthOrbit*sin(deg2rad(geomMeanAnomSun))+4*eccentEarthOrbit*varY*sin(deg2rad(geomMeanAnomSun))*cos(2*deg2rad(geomMeanLongSun))-0.5*varY*varY*sin(4*deg2rad(geomMeanLongSun))-1.25*eccentEarthOrbit*eccentEarthOrbit*sin(2*deg2rad(geomMeanAnomSun)));

  solarNoonLST = ((720-4*lon-eqOfTime+(tz)*60)/1440);

  float sunEqOfCtr = sin(deg2rad(geomMeanAnomSun))*(1.914602-julianCentury*(0.004817+0.000014*julianCentury))+sin(deg2rad(2*geomMeanAnomSun))*(0.019993-0.000101*julianCentury)+sin(deg2rad(3*geomMeanAnomSun))*0.000289;
  float sunTrueLon = geomMeanLongSun + sunEqOfCtr;
  float sunAppLon = sunTrueLon-0.00569-0.00478*sin(deg2rad(125.04-1934.136*julianCentury));
  float sunDecl = rad2deg(asin(sin(deg2rad(obliqCorr))*sin(deg2rad(sunAppLon))));
  float haSunrise = rad2deg(acos(cos(deg2rad(90.833))/(cos(deg2rad(lat))*cos(deg2rad(sunDecl)))-tan(deg2rad(lat))*tan(deg2rad(sunDecl))));

  sunriseLST = (solarNoonLST * 1440 - haSunrise*4)/1440;
  sunsetLST = (solarNoonLST * 1440 + haSunrise*4) / 1440;

  calculated = true;
}

// Assembly:
subq $0xf8, %rsp
movq %rdi, 0xf0(%rsp)
movq 0xf0(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
movl 0xc(%rdi), %esi
movl 0x10(%rdi), %edx
movl 0x14(%rdi), %ecx
callq 0x5f2f0
movss %xmm0, 0xec(%rsp)
movss 0xec(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x42bd(%rip), %xmm1     # 0x62a88
subsd %xmm1, %xmm0
movsd 0x42a9(%rip), %xmm1     # 0x62a80
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xe8(%rsp)
movss 0xe8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movss 0xe8(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x4266(%rip), %xmm2     # 0x62a70
mulsd %xmm2, %xmm1
movsd 0x4262(%rip), %xmm2     # 0x62a78
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd 0x4242(%rip), %xmm1     # 0x62a68
addsd %xmm1, %xmm0
movsd 0x422e(%rip), %xmm1     # 0x62a60
callq 0x2370
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xe4(%rsp)
movss 0xe8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movss 0xe8(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x41ea(%rip), %xmm2     # 0x62a50
mulsd %xmm2, %xmm1
movsd 0x41e6(%rip), %xmm2     # 0x62a58
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd 0x41c6(%rip), %xmm1     # 0x62a48
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xe0(%rsp)
movss 0xe8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movss 0xe8(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x4183(%rip), %xmm2     # 0x62a38
mulsd %xmm2, %xmm1
movsd 0x417f(%rip), %xmm2     # 0x62a40
addsd %xmm2, %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x4148(%rip), %xmm1     # 0x62a30
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xdc(%rsp)
movss 0xe8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movss 0xe8(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
movss 0xe8(%rsp), %xmm2
cvtss2sd %xmm2, %xmm2
movq %xmm2, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm2
movsd 0x40e1(%rip), %xmm3     # 0x62a20
mulsd %xmm3, %xmm2
movsd 0x40dd(%rip), %xmm3     # 0x62a28
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
movsd 0x40bd(%rip), %xmm2     # 0x62a18
addsd %xmm2, %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x408e(%rip), %xmm1     # 0x62a10
addsd %xmm1, %xmm0
movsd 0x1812(%rip), %xmm1     # 0x601a0
divsd %xmm1, %xmm0
movsd 0x406e(%rip), %xmm1     # 0x62a08
addsd %xmm0, %xmm1
movsd 0x17fa(%rip), %xmm0     # 0x601a0
divsd %xmm0, %xmm1
movsd 0x404e(%rip), %xmm0     # 0x62a00
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xd8(%rsp)
movss 0xd8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
movss 0xe8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3fbd(%rip), %xmm0     # 0x629a8
mulsd %xmm0, %xmm1
movsd 0x3fb9(%rip), %xmm0     # 0x629b0
addsd %xmm0, %xmm1
movsd 0x3f85(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3f81(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2510
movsd 0x8(%rsp), %xmm1
movsd 0x3fd2(%rip), %xmm2     # 0x629f8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xd4(%rsp)
movss 0xd4(%rsp), %xmm0
movss 0x15b8(%rip), %xmm1     # 0x60004
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3f2c(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3f28(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2180
movsd %xmm0, 0x10(%rsp)
movss 0xd4(%rsp), %xmm0
movss 0x157c(%rip), %xmm1     # 0x60004
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3ef0(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3eec(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2180
movaps %xmm0, %xmm1
movsd 0x10(%rsp), %xmm0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xd0(%rsp)
movss 0xd0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x28(%rsp)
movss 0xe4(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x3e99(%rip), %xmm1     # 0x62988
mulsd %xmm0, %xmm1
movsd 0x3e95(%rip), %xmm0     # 0x62990
divsd %xmm0, %xmm1
movsd 0x16a1(%rip), %xmm0     # 0x601a8
mulsd %xmm1, %xmm0
callq 0x2070
movsd %xmm0, 0x20(%rsp)
movss 0x14e6(%rip), %xmm0     # 0x60004
mulss 0xdc(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
movss 0xe0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3e42(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3e3e(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movsd 0x18(%rsp), %xmm1
movsd 0x20(%rsp), %xmm2
movaps %xmm0, %xmm3
movsd 0x28(%rsp), %xmm0
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movss 0x14d3(%rip), %xmm0     # 0x60074
mulss 0xdc(%rsp), %xmm0
mulss 0xd0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x30(%rsp)
movss 0xe0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3db6(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3db2(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movaps %xmm0, %xmm1
movsd 0x30(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rsp)
movss 0xe4(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x3d79(%rip), %xmm1     # 0x62988
mulsd %xmm0, %xmm1
movsd 0x3d75(%rip), %xmm0     # 0x62990
divsd %xmm0, %xmm1
movsd 0x1581(%rip), %xmm0     # 0x601a8
mulsd %xmm1, %xmm0
callq 0x2510
movsd 0x38(%rsp), %xmm1
movaps %xmm0, %xmm2
movsd 0x40(%rsp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x48(%rsp)
movss 0xd0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x1526(%rip), %xmm0     # 0x60188
mulsd %xmm1, %xmm0
movss 0xd0(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
movss 0xe4(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x3cf6(%rip), %xmm1     # 0x62988
mulsd %xmm0, %xmm1
movsd 0x3cf2(%rip), %xmm0     # 0x62990
divsd %xmm0, %xmm1
movsd 0x14b6(%rip), %xmm0     # 0x60160
mulsd %xmm1, %xmm0
callq 0x2070
movsd 0x48(%rsp), %xmm1
movaps %xmm0, %xmm2
movsd 0x50(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x58(%rsp)
movss 0xdc(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3cf4(%rip), %xmm0     # 0x629f0
mulsd %xmm1, %xmm0
movss 0xdc(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movss 0xe0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x3c5c(%rip), %xmm1     # 0x62988
mulsd %xmm0, %xmm1
movsd 0x3c58(%rip), %xmm0     # 0x62990
divsd %xmm0, %xmm1
movsd 0x1464(%rip), %xmm0     # 0x601a8
mulsd %xmm1, %xmm0
callq 0x2070
movsd 0x58(%rsp), %xmm1
movq 0xb0(%rsp), %rax
movaps %xmm0, %xmm2
movsd 0x60(%rsp), %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x3c05(%rip), %xmm1     # 0x62990
mulsd %xmm0, %xmm1
movsd 0x3bf1(%rip), %xmm0     # 0x62988
divsd %xmm0, %xmm1
movsd 0x13bd(%rip), %xmm0     # 0x60160
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xcc(%rsp)
movss 0x4(%rax), %xmm1
movss 0x3bbb(%rip), %xmm0     # 0x6297c
mulss %xmm0, %xmm1
movss 0x3bb3(%rip), %xmm0     # 0x62980
addss %xmm0, %xmm1
subss 0xcc(%rsp), %xmm1
movss 0x8(%rax), %xmm0
movss 0x12a9(%rip), %xmm2     # 0x60090
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x3b81(%rip), %xmm1     # 0x62978
divss %xmm1, %xmm0
movss %xmm0, 0x1c(%rax)
movss 0xe0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3b73(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3b6f(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movsd %xmm0, 0x70(%rsp)
movss 0xe8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movss 0xe8(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0x3b8e(%rip), %xmm2     # 0x629e0
mulsd %xmm2, %xmm1
movsd 0x3b8a(%rip), %xmm2     # 0x629e8
addsd %xmm2, %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x3b53(%rip), %xmm1     # 0x629d8
addsd %xmm1, %xmm0
movsd %xmm0, 0x68(%rsp)
movss 0x116d(%rip), %xmm0     # 0x60004
mulss 0xe0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3adc(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3ad8(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movsd 0x68(%rsp), %xmm2
movaps %xmm0, %xmm1
movsd 0x70(%rsp), %xmm0
movss 0xe8(%rsp), %xmm3
cvtss2sd %xmm3, %xmm3
movsd 0x3ae3(%rip), %xmm4     # 0x629c8
mulsd %xmm4, %xmm3
movsd 0x3adf(%rip), %xmm4     # 0x629d0
addsd %xmm4, %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x78(%rsp)
movss 0x1161(%rip), %xmm0     # 0x60070
mulss 0xe0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3a64(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3a60(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movsd 0x78(%rsp), %xmm1
movsd 0x3a79(%rip), %xmm2     # 0x629c0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xc8(%rsp)
movss 0xe4(%rsp), %xmm0
addss 0xc8(%rsp), %xmm0
movss %xmm0, 0xc4(%rsp)
movss 0xc4(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x3a2c(%rip), %xmm1     # 0x629b8
subsd %xmm1, %xmm0
movsd %xmm0, 0x80(%rsp)
movss 0xe8(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x39fa(%rip), %xmm0     # 0x629a8
mulsd %xmm0, %xmm1
movsd 0x39f6(%rip), %xmm0     # 0x629b0
addsd %xmm0, %xmm1
movsd 0x39c2(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x39be(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movsd 0x80(%rsp), %xmm1
movsd 0x39b4(%rip), %xmm2     # 0x629a0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xc0(%rsp)
movss 0xd4(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3972(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x396e(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movsd %xmm0, 0x88(%rsp)
movss 0xc0(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x393f(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x393b(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2070
movaps %xmm0, %xmm1
movsd 0x88(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x24a0
movaps %xmm0, %xmm1
movsd 0x3912(%rip), %xmm0     # 0x62990
mulsd %xmm1, %xmm0
movsd 0x38fe(%rip), %xmm1     # 0x62988
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xbc(%rsp)
movsd 0x38f5(%rip), %xmm0     # 0x62998
callq 0x2510
movq 0xb0(%rsp), %rax
movsd %xmm0, 0x98(%rsp)
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x38bf(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x38bb(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2510
movsd %xmm0, 0x90(%rsp)
movss 0xbc(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x388c(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3888(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2510
movsd 0x90(%rsp), %xmm1
movq 0xb0(%rsp), %rax
movaps %xmm0, %xmm2
movsd 0x98(%rsp), %xmm0
mulsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0xa0(%rsp)
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3839(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3835(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2180
movsd %xmm0, 0xa8(%rsp)
movss 0xbc(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x3806(%rip), %xmm0     # 0x62988
mulsd %xmm1, %xmm0
movsd 0x3802(%rip), %xmm1     # 0x62990
divsd %xmm1, %xmm0
callq 0x2180
movsd 0xa0(%rsp), %xmm1
movaps %xmm0, %xmm2
movsd 0xa8(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x22a0
movq 0xb0(%rsp), %rax
movaps %xmm0, %xmm1
movsd 0x37ad(%rip), %xmm0     # 0x62990
mulsd %xmm1, %xmm0
movsd 0x3799(%rip), %xmm1     # 0x62988
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xb8(%rsp)
movss 0x1c(%rax), %xmm0
movss 0xe67(%rip), %xmm1      # 0x60074
mulss 0xb8(%rsp), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
movss 0x374c(%rip), %xmm2     # 0x62978
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x373c(%rip), %xmm1     # 0x62978
divss %xmm1, %xmm0
movss %xmm0, 0x20(%rax)
movss 0x1c(%rax), %xmm0
movss 0xe22(%rip), %xmm1      # 0x60074
mulss 0xb8(%rsp), %xmm1
movss 0x3715(%rip), %xmm2     # 0x62978
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x3705(%rip), %xmm1     # 0x62978
divss %xmm1, %xmm0
movss %xmm0, 0x24(%rax)
movb $0x1, 0x19(%rax)
addq $0xf8, %rsp
retq
nopl (%rax,%rax)