// File: /workspace/github_cpp_makefile_star2_O3/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:
pushq %rbx
subq $0x60, %rsp
movq %rdi, %rbx
movl 0xc(%rdi), %esi
movl 0x10(%rdi), %edx
movl 0x14(%rdi), %ecx
callq 0x2f436
cvtss2sd %xmm0, %xmm0
addsd 0x3cf8(%rip), %xmm0     # 0x32b40
divsd 0x3cf8(%rip), %xmm0     # 0x32b48
cvtsd2ss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
movsd 0x3cea(%rip), %xmm0     # 0x32b50
mulsd %xmm1, %xmm0
addsd 0x3ce6(%rip), %xmm0     # 0x32b58
mulsd %xmm1, %xmm0
addsd 0x3ce2(%rip), %xmm0     # 0x32b60
movsd 0x3ce2(%rip), %xmm1     # 0x32b68
callq 0x2350
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x30(%rsp)
movsd 0x3cd3(%rip), %xmm0     # 0x32b70
movsd 0x20(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd 0x3cc9(%rip), %xmm0     # 0x32b78
mulsd %xmm2, %xmm0
addsd 0x3cc5(%rip), %xmm0     # 0x32b80
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x8(%rsp)
movsd 0x3cbb(%rip), %xmm0     # 0x32b88
mulsd %xmm2, %xmm0
addsd 0x3cb7(%rip), %xmm0     # 0x32b90
mulsd %xmm2, %xmm0
movsd 0x3cb3(%rip), %xmm1     # 0x32b98
subsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss %xmm0, (%rsp)
movsd 0x3ca3(%rip), %xmm0     # 0x32ba0
mulsd %xmm2, %xmm0
addsd 0x3c9f(%rip), %xmm0     # 0x32ba8
mulsd %xmm2, %xmm0
addsd 0x3c9b(%rip), %xmm0     # 0x32bb0
mulsd %xmm2, %xmm0
movsd 0x3c97(%rip), %xmm1     # 0x32bb8
subsd %xmm0, %xmm1
movsd 0x13d3(%rip), %xmm0     # 0x30300
divsd %xmm0, %xmm1
addsd 0x3c87(%rip), %xmm1     # 0x32bc0
divsd %xmm0, %xmm1
addsd 0x3c83(%rip), %xmm1     # 0x32bc8
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x3c72(%rip), %xmm0     # 0x32bd0
mulsd %xmm2, %xmm0
addsd 0x3c6e(%rip), %xmm0     # 0x32bd8
mulsd 0x3c6e(%rip), %xmm0     # 0x32be0
divsd 0x3c6e(%rip), %xmm0     # 0x32be8
movsd %xmm0, 0x58(%rsp)
callq 0x24f0
mulsd 0x3c63(%rip), %xmm0     # 0x32bf0
addsd 0x18(%rsp), %xmm0
xorps %xmm1, %xmm1
cvtsd2ss %xmm0, %xmm1
movss %xmm1, 0x34(%rsp)
movss 0x144c(%rip), %xmm0     # 0x303f4
mulss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x3c28(%rip), %xmm0     # 0x32be0
divsd 0x3c28(%rip), %xmm0     # 0x32be8
movsd %xmm0, 0x10(%rsp)
callq 0x2150
movsd %xmm0, 0x18(%rsp)
movsd 0x10(%rsp), %xmm0
callq 0x2150
mulsd 0x18(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x28(%rsp)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x38(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x30(%rsp), %xmm0
mulsd 0x3bd9(%rip), %xmm0     # 0x32be0
divsd 0x3bd9(%rip), %xmm0     # 0x32be8
movsd %xmm0, 0x50(%rsp)
addsd %xmm0, %xmm0
movsd %xmm0, 0x48(%rsp)
callq 0x2060
movsd %xmm0, 0x10(%rsp)
movss (%rsp), %xmm0
addss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x40(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rsp), %xmm0
mulsd 0x3b92(%rip), %xmm0     # 0x32be0
divsd 0x3b92(%rip), %xmm0     # 0x32be8
movsd %xmm0, 0x18(%rsp)
callq 0x2060
mulsd 0x40(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
mulsd 0x38(%rsp), %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rsp)
movss (%rsp), %xmm0
mulss 0x13a2(%rip), %xmm0     # 0x3042c
mulss 0x28(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x18(%rsp), %xmm0
callq 0x2060
mulsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x48(%rsp), %xmm0
callq 0x24f0
mulsd 0x28(%rsp), %xmm0
addsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x50(%rsp), %xmm0
mulsd 0x11e4(%rip), %xmm0     # 0x302c0
callq 0x2060
movsd 0x121f(%rip), %xmm2     # 0x30308
movsd 0x38(%rsp), %xmm1
mulsd %xmm1, %xmm2
mulsd %xmm1, %xmm2
mulsd %xmm0, %xmm2
addsd 0x10(%rsp), %xmm2
movsd %xmm2, 0x10(%rsp)
xorps %xmm0, %xmm0
cvtss2sd (%rsp), %xmm0
movsd %xmm0, (%rsp)
movsd 0x18(%rsp), %xmm0
addsd %xmm0, %xmm0
callq 0x2060
movsd 0x3acd(%rip), %xmm1     # 0x32bf8
movsd (%rsp), %xmm2
mulsd %xmm2, %xmm1
mulsd %xmm2, %xmm1
mulsd %xmm0, %xmm1
addsd 0x10(%rsp), %xmm1
mulsd 0x3a9e(%rip), %xmm1     # 0x32be8
divsd 0x3a8e(%rip), %xmm1     # 0x32be0
mulsd 0x1166(%rip), %xmm1     # 0x302c0
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss 0x4(%rbx), %xmm1
mulss 0x1326(%rip), %xmm1     # 0x30494
addss 0x39c6(%rip), %xmm1     # 0x32b3c
movss 0x8(%rbx), %xmm2
subss %xmm0, %xmm1
mulss 0x12d5(%rip), %xmm2     # 0x3045c
addss %xmm1, %xmm2
movss 0x39a5(%rip), %xmm0     # 0x32b38
divss %xmm0, %xmm2
movss %xmm2, 0x1c(%rbx)
movsd 0x18(%rsp), %xmm0
callq 0x2060
movsd %xmm0, 0x18(%rsp)
movsd 0x3a4b(%rip), %xmm0     # 0x32c00
movsd 0x20(%rsp), %xmm1
mulsd %xmm1, %xmm0
addsd 0x3a41(%rip), %xmm0     # 0x32c08
mulsd %xmm1, %xmm0
movsd 0x3a3d(%rip), %xmm1     # 0x32c10
subsd %xmm0, %xmm1
movsd %xmm1, (%rsp)
movss 0x8(%rsp), %xmm0
addss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x39ee(%rip), %xmm0     # 0x32be0
divsd 0x39ee(%rip), %xmm0     # 0x32be8
callq 0x2060
movsd 0x20(%rsp), %xmm1
mulsd 0x3a0b(%rip), %xmm1     # 0x32c18
addsd 0x3a0b(%rip), %xmm1     # 0x32c20
mulsd %xmm0, %xmm1
movsd (%rsp), %xmm2
mulsd 0x18(%rsp), %xmm2
movss 0x8(%rsp), %xmm0
mulss 0x11f2(%rip), %xmm0     # 0x30424
addsd %xmm1, %xmm2
movsd %xmm2, (%rsp)
cvtss2sd %xmm0, %xmm0
mulsd 0x3999(%rip), %xmm0     # 0x32be0
divsd 0x3999(%rip), %xmm0     # 0x32be8
callq 0x2060
mulsd 0x39cc(%rip), %xmm0     # 0x32c28
addsd (%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
addss 0x30(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd 0x39b9(%rip), %xmm0     # 0x32c30
movsd %xmm0, 0x8(%rsp)
movsd 0x58(%rsp), %xmm0
callq 0x2060
mulsd 0x39a8(%rip), %xmm0     # 0x32c38
addsd 0x8(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x20(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x34(%rsp), %xmm0
mulsd 0x392f(%rip), %xmm0     # 0x32be0
divsd 0x392f(%rip), %xmm0     # 0x32be8
callq 0x2060
movsd %xmm0, 0x8(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x20(%rsp), %xmm0
mulsd 0x390b(%rip), %xmm0     # 0x32be0
divsd 0x390b(%rip), %xmm0     # 0x32be8
callq 0x2060
mulsd 0x8(%rsp), %xmm0
callq 0x2490
movsd 0x38f3(%rip), %xmm2     # 0x32be8
mulsd %xmm2, %xmm0
movsd 0x38df(%rip), %xmm1     # 0x32be0
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x8(%rsp)
xorps %xmm0, %xmm0
cvtss2sd (%rbx), %xmm0
mulsd %xmm1, %xmm0
divsd %xmm2, %xmm0
callq 0x24f0
movsd %xmm0, 0x20(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rsp), %xmm0
mulsd 0x38a6(%rip), %xmm0     # 0x32be0
divsd 0x38a6(%rip), %xmm0     # 0x32be8
movsd %xmm0, 0x8(%rsp)
callq 0x24f0
mulsd 0x20(%rsp), %xmm0
movsd 0x38e5(%rip), %xmm1     # 0x32c40
divsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
xorps %xmm0, %xmm0
cvtss2sd (%rbx), %xmm0
mulsd 0x386c(%rip), %xmm0     # 0x32be0
divsd 0x386c(%rip), %xmm0     # 0x32be8
callq 0x2150
movsd %xmm0, (%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x2150
mulsd (%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, %xmm0
callq 0x2270
mulsd 0x3837(%rip), %xmm0     # 0x32be8
divsd 0x3827(%rip), %xmm0     # 0x32be0
cvtsd2ss %xmm0, %xmm0
mulss 0x1067(%rip), %xmm0     # 0x3042c
movaps 0xe24(%rip), %xmm1      # 0x301f0
xorps %xmm0, %xmm1
unpcklps %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movss 0x375e(%rip), %xmm0     # 0x32b38
mulss 0x1c(%rbx), %xmm0
unpcklps %xmm0, %xmm0            # xmm0 = xmm0[0,0,1,1]
addps %xmm1, %xmm0
divps 0x3864(%rip), %xmm0     # 0x32c50
movlps %xmm0, 0x20(%rbx)
movb $0x1, 0x19(%rbx)
addq $0x60, %rsp
popq %rbx
retq