// File: /workspace/github_cpp_makefile_star2_O1/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 0x2f522
cvtss2sd %xmm0, %xmm0
addsd 0x3c04(%rip), %xmm0     # 0x32b38
divsd 0x3c04(%rip), %xmm0     # 0x32b40
cvtsd2ss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
movsd 0x3bf6(%rip), %xmm0     # 0x32b48
mulsd %xmm1, %xmm0
addsd 0x3bf2(%rip), %xmm0     # 0x32b50
mulsd %xmm1, %xmm0
addsd 0x3bee(%rip), %xmm0     # 0x32b58
movsd 0x3bee(%rip), %xmm1     # 0x32b60
callq 0x2350
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x30(%rsp)
movsd 0x3bdf(%rip), %xmm0     # 0x32b68
movsd 0x20(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd 0x3bd5(%rip), %xmm0     # 0x32b70
mulsd %xmm2, %xmm0
addsd 0x3bd1(%rip), %xmm0     # 0x32b78
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x8(%rsp)
movsd 0x3bc7(%rip), %xmm0     # 0x32b80
mulsd %xmm2, %xmm0
addsd 0x3bc3(%rip), %xmm0     # 0x32b88
mulsd %xmm2, %xmm0
movsd 0x3bbf(%rip), %xmm1     # 0x32b90
subsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss %xmm0, (%rsp)
movsd 0x3baf(%rip), %xmm0     # 0x32b98
mulsd %xmm2, %xmm0
addsd 0x3bab(%rip), %xmm0     # 0x32ba0
mulsd %xmm2, %xmm0
addsd 0x3ba7(%rip), %xmm0     # 0x32ba8
mulsd %xmm2, %xmm0
movsd 0x3ba3(%rip), %xmm1     # 0x32bb0
subsd %xmm0, %xmm1
movsd 0x12e7(%rip), %xmm0     # 0x30300
divsd %xmm0, %xmm1
addsd 0x3b93(%rip), %xmm1     # 0x32bb8
divsd %xmm0, %xmm1
addsd 0x3b8f(%rip), %xmm1     # 0x32bc0
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x3b7e(%rip), %xmm0     # 0x32bc8
mulsd %xmm2, %xmm0
addsd 0x3b7a(%rip), %xmm0     # 0x32bd0
mulsd 0x3b7a(%rip), %xmm0     # 0x32bd8
divsd 0x3b7a(%rip), %xmm0     # 0x32be0
movsd %xmm0, 0x58(%rsp)
callq 0x24f0
mulsd 0x3b6f(%rip), %xmm0     # 0x32be8
addsd 0x18(%rsp), %xmm0
xorps %xmm1, %xmm1
cvtsd2ss %xmm0, %xmm1
movss %xmm1, 0x34(%rsp)
movss 0x1360(%rip), %xmm0     # 0x303f4
mulss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x3b34(%rip), %xmm0     # 0x32bd8
divsd 0x3b34(%rip), %xmm0     # 0x32be0
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 0x3ae5(%rip), %xmm0     # 0x32bd8
divsd 0x3ae5(%rip), %xmm0     # 0x32be0
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 0x3a9e(%rip), %xmm0     # 0x32bd8
divsd 0x3a9e(%rip), %xmm0     # 0x32be0
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 0x12b6(%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 0x10f8(%rip), %xmm0     # 0x302c0
callq 0x2060
movsd 0x1133(%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 0x39d9(%rip), %xmm1     # 0x32bf0
movsd (%rsp), %xmm2
mulsd %xmm2, %xmm1
mulsd %xmm2, %xmm1
mulsd %xmm0, %xmm1
addsd 0x10(%rsp), %xmm1
mulsd 0x39aa(%rip), %xmm1     # 0x32be0
divsd 0x399a(%rip), %xmm1     # 0x32bd8
mulsd 0x107a(%rip), %xmm1     # 0x302c0
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss 0x4(%rbx), %xmm1
mulss 0x1236(%rip), %xmm1     # 0x30490
addss 0x38ce(%rip), %xmm1     # 0x32b30
movss 0x8(%rbx), %xmm2
subss %xmm0, %xmm1
mulss 0x11e9(%rip), %xmm2     # 0x3045c
addss %xmm1, %xmm2
movss 0x38ad(%rip), %xmm0     # 0x32b2c
divss %xmm0, %xmm2
movss %xmm2, 0x1c(%rbx)
movsd 0x18(%rsp), %xmm0
callq 0x2060
movsd %xmm0, 0x18(%rsp)
movsd 0x3957(%rip), %xmm0     # 0x32bf8
movsd 0x20(%rsp), %xmm1
mulsd %xmm1, %xmm0
addsd 0x394d(%rip), %xmm0     # 0x32c00
mulsd %xmm1, %xmm0
movsd 0x3949(%rip), %xmm1     # 0x32c08
subsd %xmm0, %xmm1
movsd %xmm1, (%rsp)
movss 0x8(%rsp), %xmm0
addss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x38fa(%rip), %xmm0     # 0x32bd8
divsd 0x38fa(%rip), %xmm0     # 0x32be0
callq 0x2060
movsd 0x20(%rsp), %xmm1
mulsd 0x3917(%rip), %xmm1     # 0x32c10
addsd 0x3917(%rip), %xmm1     # 0x32c18
mulsd %xmm0, %xmm1
movsd (%rsp), %xmm2
mulsd 0x18(%rsp), %xmm2
movss 0x8(%rsp), %xmm0
mulss 0x1106(%rip), %xmm0     # 0x30424
addsd %xmm1, %xmm2
movsd %xmm2, (%rsp)
cvtss2sd %xmm0, %xmm0
mulsd 0x38a5(%rip), %xmm0     # 0x32bd8
divsd 0x38a5(%rip), %xmm0     # 0x32be0
callq 0x2060
mulsd 0x38d8(%rip), %xmm0     # 0x32c20
addsd (%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
addss 0x30(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd 0x38c5(%rip), %xmm0     # 0x32c28
movsd %xmm0, 0x8(%rsp)
movsd 0x58(%rsp), %xmm0
callq 0x2060
mulsd 0x38b4(%rip), %xmm0     # 0x32c30
addsd 0x8(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x20(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x34(%rsp), %xmm0
mulsd 0x383b(%rip), %xmm0     # 0x32bd8
divsd 0x383b(%rip), %xmm0     # 0x32be0
callq 0x2060
movsd %xmm0, 0x8(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x20(%rsp), %xmm0
mulsd 0x3817(%rip), %xmm0     # 0x32bd8
divsd 0x3817(%rip), %xmm0     # 0x32be0
callq 0x2060
mulsd 0x8(%rsp), %xmm0
callq 0x2490
movsd 0x37ff(%rip), %xmm2     # 0x32be0
mulsd %xmm2, %xmm0
movsd 0x37eb(%rip), %xmm1     # 0x32bd8
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 0x37b2(%rip), %xmm0     # 0x32bd8
divsd 0x37b2(%rip), %xmm0     # 0x32be0
movsd %xmm0, 0x8(%rsp)
callq 0x24f0
mulsd 0x20(%rsp), %xmm0
movsd 0x37f1(%rip), %xmm1     # 0x32c38
divsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
xorps %xmm0, %xmm0
cvtss2sd (%rbx), %xmm0
mulsd 0x3778(%rip), %xmm0     # 0x32bd8
divsd 0x3778(%rip), %xmm0     # 0x32be0
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 0x3743(%rip), %xmm0     # 0x32be0
divsd 0x3733(%rip), %xmm0     # 0x32bd8
cvtsd2ss %xmm0, %xmm0
mulss 0xf7b(%rip), %xmm0      # 0x3042c
movaps 0xd38(%rip), %xmm1      # 0x301f0
xorps %xmm0, %xmm1
unpcklps %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movss 0x3666(%rip), %xmm0     # 0x32b2c
mulss 0x1c(%rbx), %xmm0
unpcklps %xmm0, %xmm0            # xmm0 = xmm0[0,0,1,1]
addps %xmm1, %xmm0
divps 0x3778(%rip), %xmm0     # 0x32c50
movlps %xmm0, 0x20(%rbx)
movb $0x1, 0x19(%rbx)
addq $0x60, %rsp
popq %rbx
retq