// File: /workspace/github_cpp_makefile_star2_O2/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 0x4709d(%rip), %xmm1    # 0x1159e0
movsd %xmm0, -0x10(%rbp)
addsd %xmm0, %xmm1
addsd 0x46e1c(%rip), %xmm1    # 0x115770
divsd 0x46e1c(%rip), %xmm1    # 0x115778
movsd %xmm1, -0x8(%rbp)
movapd %xmm1, %xmm0
callq 0xce89e
movsd %xmm0, -0x20(%rbp)
movsd 0x47071(%rip), %xmm2    # 0x1159e8
movsd -0x8(%rbp), %xmm0
mulsd %xmm0, %xmm2
addsd 0x47068(%rip), %xmm2    # 0x1159f0
mulsd %xmm0, %xmm2
addsd 0x47064(%rip), %xmm2    # 0x1159f8
movsd 0x39814(%rip), %xmm0    # 0x1081b0
movsd 0x47064(%rip), %xmm1    # 0x115a08
ucomisd %xmm0, %xmm2
jbe 0xce9b0
addsd %xmm1, %xmm2
jmp 0xce9a4
xorpd %xmm1, %xmm1
ucomisd %xmm2, %xmm1
jbe 0xce9c0
addsd %xmm0, %xmm2
jmp 0xce9b4
movsd -0x10(%rbp), %xmm0
movsd %xmm2, -0x10(%rbp)
callq 0xce799
movsd %xmm0, -0x38(%rbp)
movsd 0x46da4(%rip), %xmm0    # 0x115780
movsd -0x8(%rbp), %xmm2
mulsd %xmm2, %xmm0
movsd 0x46da3(%rip), %xmm1    # 0x115790
mulsd %xmm2, %xmm1
mulsd %xmm2, %xmm1
movapd %xmm2, %xmm3
mulsd %xmm2, %xmm3
mulsd %xmm2, %xmm3
addsd 0x46d7f(%rip), %xmm0    # 0x115788
divsd 0x46d87(%rip), %xmm3    # 0x115798
addsd %xmm0, %xmm1
addsd %xmm1, %xmm3
movsd %xmm3, -0x8(%rbp)
movsd -0x20(%rbp), %xmm0
mulsd 0x26e75(%rip), %xmm0    # 0xf58a0
divsd 0x26e75(%rip), %xmm0    # 0xf58a8
mulsd 0x2462d(%rip), %xmm0    # 0xf3068
callq 0x91a0
mulsd %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x8(%rbp), %xmm0
mulsd 0x26e4a(%rip), %xmm0    # 0xf58a0
divsd 0x26e4a(%rip), %xmm0    # 0xf58a8
callq 0x9080
movsd %xmm0, -0x30(%rbp)
movsd -0x8(%rbp), %xmm0
addsd %xmm0, %xmm0
mulsd 0x26e27(%rip), %xmm0    # 0xf58a0
divsd 0x26e27(%rip), %xmm0    # 0xf58a8
callq 0x9080
movsd %xmm0, -0x8(%rbp)
movsd -0x10(%rbp), %xmm0
addsd %xmm0, %xmm0
mulsd 0x26e04(%rip), %xmm0    # 0xf58a0
divsd 0x26e04(%rip), %xmm0    # 0xf58a8
movsd %xmm0, -0x18(%rbp)
callq 0x9080
movsd %xmm0, -0x28(%rbp)
movsd -0x18(%rbp), %xmm0
callq 0x9710
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
mulsd 0x26f19(%rip), %xmm0    # 0xf59e8
mulsd 0x26dc9(%rip), %xmm0    # 0xf58a0
divsd 0x26dc9(%rip), %xmm0    # 0xf58a8
callq 0x9080
movsd 0x26fac(%rip), %xmm1    # 0xf5a98
movsd -0x38(%rbp), %xmm2
mulsd %xmm2, %xmm1
movsd -0x30(%rbp), %xmm5
mulsd %xmm5, %xmm1
movsd -0x20(%rbp), %xmm4
movsd -0x28(%rbp), %xmm3
mulsd %xmm4, %xmm3
addsd %xmm1, %xmm3
movapd %xmm3, %xmm7
movapd %xmm2, %xmm1
movapd %xmm2, %xmm3
movsd 0x26ec4(%rip), %xmm6    # 0xf59e8
mulsd %xmm6, %xmm1
mulsd %xmm4, %xmm1
mulsd %xmm5, %xmm1
mulsd -0x18(%rbp), %xmm1
addsd %xmm7, %xmm1
movsd 0x26ebf(%rip), %xmm2    # 0xf5a00
mulsd %xmm4, %xmm2
mulsd %xmm4, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x46ea7(%rip), %xmm1    # 0x115a00
mulsd %xmm3, %xmm1
mulsd %xmm3, %xmm1
mulsd -0x8(%rbp), %xmm1
addsd %xmm1, %xmm0
mulsd 0x26d36(%rip), %xmm0    # 0xf58a8
divsd 0x26d26(%rip), %xmm0    # 0xf58a0
mulsd %xmm6, %xmm0
leaq 0x228453(%rip), %rax    # 0x2f6fd8
movsd (%rax), %xmm1
leaq 0x228a30(%rip), %rax    # 0x2f75c0
mulsd 0x245c8(%rip), %xmm1    # 0xf3160
movsd %xmm0, (%rax)
mulsd %xmm6, %xmm1
addsd %xmm1, %xmm0
addq $0x40, %rsp
popq %rbp
retq