// File: jkingan[P]ladyheather/heathmsc.cpp
// Function: nutation(double)
double nutation(double JD)
{
double T, T2, T3, DegToRad;
double w, w1, w2, w3, w4, w5;
   
   // Code derived from code by Jay Tanner

   // ---------------------------------
   // Compute (T) in Julian centuries
   // from J2000.0 and powers of (T).

   T = (JD - JD2000) / 36525.0;
   T2 = T * T;
   T3 = T * T2;

   // ------------------------------------------------
   // Define conversion factor for degrees to radians.
   // Multiply degrees by this factor to get radians.

   DegToRad = PI / 180.0;

   // -----------------------------------------------
   // Compute mean elongation of the moon in radians.

   w1 = DegToRad*(297.85036 + 445267.11148*T
      - 0.0019142*T2 + (T3 / 189474.0));

   // -------------------------------------------
   // Compute mean anomaly of the sun in radians.

   w2 = DegToRad*(357.52772 + 35999.05034*T
      - 0.0001603*T2 - (T3 / 300000.0));

   // --------------------------------------------
   // Compute mean anomaly of the moon in radians.

   w3 = DegToRad*(134.96298 + 477198.867398*T
      + 0.0086972*T2 + (T3 / 56250.0));

   // -----------------------------------------------
   // Compute moon's argument of latitude in radians.

   w4 = DegToRad*(93.27191 + 483202.017538*T
      - 0.0036825*T2 + (T3 / 327270.0));

   // ------------------------------------------------------
   // Compute longitude of moon's ascending node in radians.

   w5 = DegToRad*(125.04452 - 1934.136261*T
      + 0.0020708*T2 + (T3 / 450000.0));

   // ---------------------------------------------
   // Compute the nutation in obliquity in terms of
   // arc seconds * 10000

   w  = cos(w5)*(92025.0 + 8.9*T);

   w += cos(2.0*(w4 - w1 + w5))*(5736.0 - 3.1*T);
   w += cos(2.0*(w4 + w5))*(977.0 - 0.5*T);
   w += cos(2.0*w5)*(0.5*T - 895.0);
   w += cos(w2)*(54.0 - 0.1*T);
   w -= 7.0*cos(w3);
   w += cos(w2 + 2.0*(w4 - w1 + w5))*(224.0 - 0.6*T);
   w += 200.0*cos(2.0*w4 + w5);
   w += cos(w3 + 2.0*(w4 + w5))*(129.0 - 0.1*T);
   w += cos(2.0*(w4 - w1 + w5) - w2)*(0.3*T - 95.0);
   w -= 70.0*cos(2.0*(w4 - w1) + w5);
   w -= 53.0*cos(2.0*(w4 + w5) - w3);
   w -= 33.0*cos(w3 + w5);
   w += 26.0*cos(2.0*(w1 + w4 + w5) - w3);
   w += 32.0*cos(w5 - w3);
   w += 27.0*cos(w3 + 2.0*w4 + w5);
   w -= 24.0*cos(2.0*(w4 - w3) + w5);
   w += 16.0*cos(2.0*(w1 + w4 + w5));
   w += 13.0*cos(2.0*(w3 + w4 + w5));
   w -= 12.0*cos(w3 + 2.0*(w4 - w1 + w5));
   w -= 10.0*cos(2.0*w4 + w5 - w3);
   w -= 8.0*cos(2.0*w1 - w3 + w5);
   w += 7.0*cos(2.0*(w2 - w1 + w4 + w5));
   w += 9.0*cos(w2 + w5);
   w += 7.0*cos(w3 + w5 - 2.0*w1);
   w += 6.0*cos(w5 - w2);
   w += 5.0*cos(2.0*(w1 + w4) - w3 + w5);
   w += 3.0*cos(w3 + 2.0*(w4 + w1 + w5));
   w -= 3.0*cos(w2 + 2.0*(w4 + w5));
   w += 3.0*cos(2.0*(w4 + w5) - w2);
   w += 3.0*cos(2.0*(w1 + w4) + w5);
   w -= 3.0*cos(2.0*(w3 + w4 + w5 - w1));
   w -= 3.0*cos(w3 + 2.0*(w4 - w1) + w5);
   w += 3.0*cos(2.0*(w1 - w3) + w5);
   w += 3.0*cos(2.0*w1 + w5);
   w += 3.0*cos(2.0*(w4 - w1) + w5 - w2);
   w += 3.0*cos(w5 - 2.0*w1);
   w += 3.0*cos(2.0*(w3 + w4) + w5);

   // -----------------------------------
   // Done.  Return nutation in obliquity
   // expressed in decimal degrees.

   return w / 36000000.0;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
movsd 0x5b6ee(%rip), %xmm1    # 0x18e388
subsd %xmm1, %xmm0
movsd 0x5b6da(%rip), %xmm1    # 0x18e380
divsd %xmm1, %xmm0
movsd %xmm0, -0x10(%rbp)
movsd -0x10(%rbp), %xmm0
mulsd -0x10(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x10(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd 0x3e9bb(%rip), %xmm0    # 0x171690
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
movsd -0x10(%rbp), %xmm2
movsd 0x5b7c4(%rip), %xmm1    # 0x18e4b0
mulsd %xmm1, %xmm2
movsd 0x5b7c0(%rip), %xmm1    # 0x18e4b8
addsd %xmm1, %xmm2
movsd -0x18(%rbp), %xmm1
movsd 0x5b79f(%rip), %xmm3    # 0x18e4a8
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd -0x20(%rbp), %xmm2
movsd 0x5b782(%rip), %xmm3    # 0x18e4a0
divsd %xmm3, %xmm2
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x28(%rbp), %xmm0
movsd -0x10(%rbp), %xmm2
movsd 0x5b62f(%rip), %xmm1    # 0x18e370
mulsd %xmm1, %xmm2
movsd 0x5b62b(%rip), %xmm1    # 0x18e378
addsd %xmm1, %xmm2
movsd -0x18(%rbp), %xmm1
movsd 0x5b60a(%rip), %xmm3    # 0x18e368
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd -0x20(%rbp), %xmm2
movsd 0x5b5ed(%rip), %xmm3    # 0x18e360
divsd %xmm3, %xmm2
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x28(%rbp), %xmm0
movsd -0x10(%rbp), %xmm2
movsd 0x5b6fa(%rip), %xmm1    # 0x18e490
mulsd %xmm1, %xmm2
movsd 0x5b6f6(%rip), %xmm1    # 0x18e498
addsd %xmm1, %xmm2
movsd -0x18(%rbp), %xmm1
movsd 0x5b6d5(%rip), %xmm3    # 0x18e488
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd -0x20(%rbp), %xmm2
movsd 0x5b6b8(%rip), %xmm3    # 0x18e480
divsd %xmm3, %xmm2
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x28(%rbp), %xmm0
movsd -0x10(%rbp), %xmm2
movsd 0x5b685(%rip), %xmm1    # 0x18e470
mulsd %xmm1, %xmm2
movsd 0x5b681(%rip), %xmm1    # 0x18e478
addsd %xmm1, %xmm2
movsd -0x18(%rbp), %xmm1
movsd 0x5b660(%rip), %xmm3    # 0x18e468
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd -0x20(%rbp), %xmm2
movsd 0x5b643(%rip), %xmm3    # 0x18e460
divsd %xmm3, %xmm2
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x28(%rbp), %xmm0
movsd -0x10(%rbp), %xmm2
movsd 0x5b610(%rip), %xmm1    # 0x18e450
mulsd %xmm1, %xmm2
movsd 0x5b60c(%rip), %xmm1    # 0x18e458
addsd %xmm1, %xmm2
movsd -0x18(%rbp), %xmm1
movsd 0x5b5eb(%rip), %xmm3    # 0x18e448
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
movsd -0x20(%rbp), %xmm2
movsd 0x5b5ce(%rip), %xmm3    # 0x18e440
divsd %xmm3, %xmm2
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm1
movsd 0x5b596(%rip), %xmm2    # 0x18e430
mulsd %xmm2, %xmm1
movsd 0x5b592(%rip), %xmm2    # 0x18e438
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm1
subsd -0x38(%rbp), %xmm1
addsd -0x58(%rbp), %xmm1
movsd 0x3c286(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm2
movsd 0x5b540(%rip), %xmm1    # 0x18e420
mulsd %xmm1, %xmm2
movsd 0x5b53c(%rip), %xmm1    # 0x18e428
addsd %xmm1, %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm1
addsd -0x58(%rbp), %xmm1
movsd 0x3c23c(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm2
movsd 0x5b4e6(%rip), %xmm1    # 0x18e410
mulsd %xmm1, %xmm2
movsd 0x5b4e2(%rip), %xmm1    # 0x18e418
addsd %xmm1, %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd 0x3c1fc(%rip), %xmm0    # 0x16f150
mulsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm2
movsd 0x3c125(%rip), %xmm1    # 0x16f090
mulsd %xmm1, %xmm2
movsd 0x5b491(%rip), %xmm1    # 0x18e408
addsd %xmm1, %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm2
movsd 0x5b434(%rip), %xmm1    # 0x18e3d8
mulsd %xmm1, %xmm2
movsd 0x5b450(%rip), %xmm1    # 0x18e400
addsd %xmm1, %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5b41b(%rip), %xmm2    # 0x18e3f8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm2
movsd 0x5b3d0(%rip), %xmm1    # 0x18e3e8
mulsd %xmm1, %xmm2
movsd 0x5b3cc(%rip), %xmm1    # 0x18e3f0
addsd %xmm1, %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3c13a(%rip), %xmm2    # 0x16f198
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm2
movsd 0x5b344(%rip), %xmm1    # 0x18e3d8
mulsd %xmm1, %xmm2
movsd 0x5b340(%rip), %xmm1    # 0x18e3e0
addsd %xmm1, %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
movsd -0x40(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x10(%rbp), %xmm2
movsd 0x4fe65(%rip), %xmm1    # 0x182f60
mulsd %xmm1, %xmm2
movsd 0x5b2c9(%rip), %xmm1    # 0x18e3d0
addsd %xmm1, %xmm2
movsd -0x30(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5b282(%rip), %xmm2    # 0x18e3c8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5b22d(%rip), %xmm2    # 0x18e3c0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5b1fc(%rip), %xmm2    # 0x18e3b8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm0
addsd -0x50(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5b1a2(%rip), %xmm2    # 0x18e3b0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x58(%rbp), %xmm0
subsd -0x48(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3be99(%rip), %xmm2    # 0x16f0d0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5b13b(%rip), %xmm2    # 0x18e3a8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
subsd -0x48(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x4ff2d(%rip), %xmm2    # 0x1831d0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm1
addsd -0x50(%rbp), %xmm1
addsd -0x58(%rbp), %xmm1
movsd 0x3be89(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3e303(%rip), %xmm2    # 0x1715e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
addsd -0x50(%rbp), %xmm1
addsd -0x58(%rbp), %xmm1
movsd 0x3be4f(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5b089(%rip), %xmm2    # 0x18e3a0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3e3a6(%rip), %xmm2    # 0x1716f8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
subsd -0x48(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bd88(%rip), %xmm2    # 0x16f110
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x4fdeb(%rip), %xmm2    # 0x1831c0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm1
subsd -0x38(%rbp), %xmm1
addsd -0x50(%rbp), %xmm1
addsd -0x58(%rbp), %xmm1
movsd 0x3bd52(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3e274(%rip), %xmm2    # 0x171688
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x4f813(%rip), %xmm2    # 0x182c50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3e215(%rip), %xmm2    # 0x171688
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x58(%rbp), %xmm0
subsd -0x40(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x4fbd4(%rip), %xmm2    # 0x183070
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm0
addsd -0x50(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bc72(%rip), %xmm2    # 0x16f160
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
addsd -0x38(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bcb7(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5ae39(%rip), %xmm2    # 0x18e398
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
movsd -0x40(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bc34(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm0
addsd -0x50(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bbfe(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
addsd -0x50(%rbp), %xmm1
addsd -0x58(%rbp), %xmm1
subsd -0x38(%rbp), %xmm1
movsd 0x3bb45(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5ad77(%rip), %xmm2    # 0x18e398
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm1
movsd -0x50(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x5ad3c(%rip), %xmm2    # 0x18e398
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm0
subsd -0x48(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bb4e(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x38(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bb1d(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x50(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
subsd -0x40(%rbp), %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bae2(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x58(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3bab1(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x48(%rbp), %xmm0
addsd -0x50(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
callq 0x96f0
movsd -0x30(%rbp), %xmm1
movsd 0x3ba7b(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
movsd 0x5ac11(%rip), %xmm1    # 0x18e390
divsd %xmm1, %xmm0
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)