// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heathmsc.cpp
// Function: eot(double)
double eot(double jd)
{
double t;
double lon_ofs;
double m;
double e;

   // calculate the equation of time
   // adapted from code by Mike Chirico and NOAA

   t = jd;
///t += jtime(3,12,30, 0.0);       // !!!!! fudge factor to get closer to SPA results
   t += jtime(2,36,00, 0.0);       // !!!!! fudge factor to get closer to SPA results
   t = (t - JD2000) / 36525.0;

   double epsilon = calcObliquityCorrection(t);               
   double l0 = 280.46646 + t * (36000.76983 + 0.0003032 * t);
   while(l0 > 360.0) l0 -= 360.0;
   while(l0 < 0.0) l0 += 360.0;
   e = orbit_eccentricity(jd);
   m = (357.52772 + (35999.05034*t) - (0.0001603*t*t) - (t*t*t / 300000.0));

   double y = tan((epsilon*PI/180.0)/2.0);
   y *= y;

   double sinm   = sin(m * PI/180.0);
   double sin2m  = sin(2.0 * m*PI/180.0);
   double sin2l0 = sin(2.0 * l0*PI/180.0);
   double cos2l0 = cos(2.0 * l0*PI/180.0);
   double sin4l0 = sin(4.0 * l0*PI/180.0);
   eot_ofs = y * sin2l0 - 2.0 * e * sinm + 4.0 * e * y * sinm * cos2l0
           - 0.5 * y * y * sin4l0 - 1.25 * e * e * sin2m;

   eot_ofs = (eot_ofs * 180.0 / PI) * 4.0;
///eot_ofs -= 0.008343;  // more fudge factor to match SPA results
   lon_ofs = (-lon*RAD_TO_DEG*4.0); // + (time_zone()*60.0);

   return (eot_ofs - lon_ofs);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movsd 0x4a9fa(%rip), %xmm1    # 0x12b9c8
movsd %xmm0, -0x8(%rbp)
addsd %xmm0, %xmm1
addsd 0x4a771(%rip), %xmm1    # 0x12b750
divsd 0x4a771(%rip), %xmm1    # 0x12b758
movsd %xmm1, -0x18(%rbp)
movsd 0x4a9bc(%rip), %xmm0    # 0x12b9b0
mulsd %xmm1, %xmm0
addsd 0x4a9b8(%rip), %xmm0    # 0x12b9b8
mulsd 0x2a810(%rip), %xmm0    # 0x10b818
divsd 0x2a810(%rip), %xmm0    # 0x10b820
callq 0x9710
movsd -0x18(%rbp), %xmm4
movsd 0x4a9ae(%rip), %xmm3    # 0x12b9d0
mulsd %xmm4, %xmm3
addsd 0x4a9aa(%rip), %xmm3    # 0x12b9d8
mulsd %xmm4, %xmm3
addsd 0x4a9a6(%rip), %xmm3    # 0x12b9e0
ucomisd 0x3d04e(%rip), %xmm3    # 0x11e090
jbe 0xe105e
movsd 0x4a99c(%rip), %xmm1    # 0x12b9e8
movsd 0x3d03c(%rip), %xmm2    # 0x11e090
addsd %xmm1, %xmm3
ucomisd %xmm2, %xmm3
ja 0xe1054
xorpd %xmm1, %xmm1
ucomisd %xmm3, %xmm1
jbe 0xe107a
movsd 0x3d020(%rip), %xmm2    # 0x11e090
addsd %xmm2, %xmm3
ucomisd %xmm3, %xmm1
ja 0xe1070
movsd %xmm3, -0x20(%rbp)
movsd 0x4a901(%rip), %xmm1    # 0x12b988
mulsd %xmm4, %xmm1
addsd 0x4a8fd(%rip), %xmm1    # 0x12b990
mulsd %xmm4, %xmm1
addsd 0x4a8f9(%rip), %xmm1    # 0x12b998
mulsd %xmm4, %xmm1
movsd 0x4a8f5(%rip), %xmm2    # 0x12b9a0
subsd %xmm1, %xmm2
movsd 0x27f51(%rip), %xmm1    # 0x109008
divsd %xmm1, %xmm2
addsd 0x4a7bd(%rip), %xmm2    # 0x12b880
divsd %xmm1, %xmm2
addsd 0x4a8d9(%rip), %xmm2    # 0x12b9a8
mulsd 0x4a8e9(%rip), %xmm0    # 0x12b9c0
addsd %xmm2, %xmm0
movsd -0x8(%rbp), %xmm5
addsd 0x4a668(%rip), %xmm5    # 0x12b750
divsd 0x4a838(%rip), %xmm5    # 0x12b928
movsd 0x4a838(%rip), %xmm1    # 0x12b930
mulsd %xmm5, %xmm1
addsd 0x4a834(%rip), %xmm1    # 0x12b938
movsd 0x4a834(%rip), %xmm2    # 0x12b940
mulsd %xmm5, %xmm2
mulsd %xmm5, %xmm2
addsd %xmm1, %xmm2
movsd 0x4a828(%rip), %xmm1    # 0x12b948
mulsd %xmm5, %xmm1
mulsd %xmm5, %xmm1
mulsd %xmm5, %xmm1
addsd %xmm2, %xmm1
movsd 0x4a818(%rip), %xmm2    # 0x12b950
mulsd %xmm5, %xmm2
mulsd %xmm5, %xmm2
mulsd %xmm5, %xmm2
mulsd %xmm5, %xmm2
addsd %xmm1, %xmm2
movsd 0x4a804(%rip), %xmm1    # 0x12b958
mulsd %xmm5, %xmm1
mulsd %xmm5, %xmm1
mulsd %xmm5, %xmm1
mulsd %xmm5, %xmm1
mulsd %xmm5, %xmm1
addsd %xmm2, %xmm1
movsd %xmm1, -0x38(%rbp)
movsd 0x4a5e7(%rip), %xmm1    # 0x12b760
mulsd %xmm4, %xmm1
movsd 0x4a5eb(%rip), %xmm2    # 0x12b770
mulsd %xmm4, %xmm2
mulsd %xmm4, %xmm2
movapd %xmm4, %xmm3
mulsd %xmm4, %xmm3
mulsd %xmm4, %xmm3
addsd 0x4a5c7(%rip), %xmm1    # 0x12b768
divsd 0x4a5cf(%rip), %xmm3    # 0x12b778
addsd %xmm1, %xmm2
addsd %xmm2, %xmm3
movsd %xmm3, -0x8(%rbp)
mulsd 0x2a65a(%rip), %xmm0    # 0x10b818
divsd 0x2a65a(%rip), %xmm0    # 0x10b820
mulsd 0x27e9a(%rip), %xmm0    # 0x109068
callq 0x91b0
mulsd %xmm0, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x8(%rbp), %xmm0
mulsd 0x2a62f(%rip), %xmm0    # 0x10b818
divsd 0x2a62f(%rip), %xmm0    # 0x10b820
callq 0x9080
movsd %xmm0, -0x30(%rbp)
movsd -0x8(%rbp), %xmm0
addsd %xmm0, %xmm0
mulsd 0x2a60c(%rip), %xmm0    # 0x10b818
divsd 0x2a60c(%rip), %xmm0    # 0x10b820
callq 0x9080
movsd %xmm0, -0x8(%rbp)
movsd -0x20(%rbp), %xmm0
addsd %xmm0, %xmm0
mulsd 0x2a5e9(%rip), %xmm0    # 0x10b818
divsd 0x2a5e9(%rip), %xmm0    # 0x10b820
movsd %xmm0, -0x10(%rbp)
callq 0x9080
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
callq 0x9710
movsd %xmm0, -0x10(%rbp)
movsd -0x20(%rbp), %xmm1
mulsd 0x2a706(%rip), %xmm1    # 0x10b968
mulsd 0x2a5ae(%rip), %xmm1    # 0x10b818
divsd 0x2a5ae(%rip), %xmm1    # 0x10b820
movapd %xmm1, %xmm0
callq 0x9080
movsd 0x2a79d(%rip), %xmm1    # 0x10ba20
movsd -0x38(%rbp), %xmm2
mulsd %xmm2, %xmm1
movsd -0x30(%rbp), %xmm5
mulsd %xmm5, %xmm1
movsd -0x18(%rbp), %xmm4
movsd -0x28(%rbp), %xmm3
mulsd %xmm4, %xmm3
addsd %xmm1, %xmm3
movapd %xmm3, %xmm7
movapd %xmm2, %xmm1
movapd %xmm2, %xmm3
movsd 0x2a6ad(%rip), %xmm6    # 0x10b968
mulsd %xmm6, %xmm1
mulsd %xmm4, %xmm1
mulsd %xmm5, %xmm1
mulsd -0x10(%rbp), %xmm1
addsd %xmm7, %xmm1
movsd 0x2a6a8(%rip), %xmm2    # 0x10b980
mulsd %xmm4, %xmm2
mulsd %xmm4, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x4a700(%rip), %xmm1    # 0x12b9f0
mulsd %xmm3, %xmm1
mulsd %xmm3, %xmm1
mulsd -0x8(%rbp), %xmm1
addsd %xmm1, %xmm0
mulsd 0x2a517(%rip), %xmm0    # 0x10b820
divsd 0x2a507(%rip), %xmm0    # 0x10b818
mulsd %xmm6, %xmm0
leaq 0x22bcbc(%rip), %rax    # 0x30cfd8
movsd (%rax), %xmm1
leaq 0x22c299(%rip), %rax    # 0x30d5c0
mulsd 0x27e29(%rip), %xmm1    # 0x109158
movsd %xmm0, (%rax)
mulsd %xmm6, %xmm1
addsd %xmm1, %xmm0
addq $0x40, %rsp
popq %rbp
retq