// File: jkingan[P]ladyheather/heathmsc.cpp
// Function: calc_gals(double, double, double, double)
double calc_gals(double jd, double lat, double lon, double alt)
{
double tl0, j1900, t, n, el1, sl, pl, hl, pl1, i, nu, tl;
double chi, chi1, ll1, cosalf, sinalf, alf, xi, sigma, ll, lm;
double costht, cosphi, c, rl, ap, ap1, dl, D, gm, gs, g0, love;
double fmjd;

    fmjd = jd - JD_MJD;

    tl0 = fmod(fmjd, 1.0) * 24.0;
    j1900 = fMJD_TO_J1900(fmjd);
    t = j1900 / 36525.0;
    n = POLY(t, 4.523601612, -33.75715303, 0.0000367488, 0.0000000387);
    el1 = POLY(t, 0.01675104, -0.0000418, 0.000000126, 0);
    sl = POLY(t, 4.720023438, 8399.7093, 0.0000440695, 0.0000000329);
    pl = POLY(t, 5.835124721, 71.01800936, -0.0001805446, -0.0000002181);
    hl = POLY(t, 4.881627934,628.3319508, 0.0000052796, 0);
    pl1 = POLY(t, 4.908229467, 0.0300052641, 7.9024e-06, 0.0000000581);
    i = acos(0.9136975738 - 0.0356895353 * cos(n));
    if(i) nu = asin(0.0896765581 * sin(n) / sin(i));
else  nu = 0.0;
    tl = RAD(15.0 * tl0 + lon);
    chi = tl + hl - nu;
    chi1 = tl + hl;
    ll1 = hl + 2.0 * el1 * sin(hl - pl1);
    cosalf = cos(n) * cos(nu) + sin(n) * sin(nu) * 0.9173938078;
    sinalf = 0.3979806546 * sin(n) / sin(i);
    alf = 2.0 * atan(sinalf / (1 + cosalf));
    xi = n - alf;
    sigma = sl - xi;
    ll = sigma + 0.1098 * sin(sl - pl)
        + 0.0037675125 * sin(2 * (sl - pl))
        + 0.0154002735 * sin(sl - 2 * hl + pl)
        + 0.0076940028 * sin(2 * (sl - hl));
    lm = RAD(lat);   // lamda
    costht = sin(lm) * sin(i) * sin(ll) + cos(lm) *
        ( SQ2(cos(0.5 * i)) * cos(ll - chi) + SQ2(sin(0.5 * i)) * cos(ll + chi) );
    cosphi = sin(lm) * 0.3979806546 * sin(ll1) + cos(lm) *
        ( 0.9586969039 * cos(ll1 - chi1) + 0.0413030961 * cos(ll1 + chi1) );
    c = 1 / sqrt(1 + 0.006738 * SQ2(sin(lm)));
    rl = 6.37827e+08 * c + alt * 100.0; // meters to cm
    ap = 2.60930776e-11;
    ap1 = 1.0 / (1.495e+13 * (1.0 - el1 * el1));
    dl = 1.0 / (1.0 / cl
        + ap * el * cos(sl - pl)
        + ap * el * el * cos(2.0 * (sl - pl))
        + 1.875 * ap * ml * el * cos(sl - 2.0 * hl + pl)
        + ap * ml * ml * cos(2.0 * (sl - hl)) );
    D = 1.0 / (1.0 / cl1
        + ap1 * el1 * cos(hl - pl1));
    gm = mu * m * rl * (3.0 * SQ2(costht) - 1.0) / SQ3(dl)
        + 1.5 * mu * m * rl * rl * (5 * SQ3(costht) - 3 * costht) / SQ4(dl);
    gs = mu * s * rl * (3.0 * SQ2(cosphi) - 1.0) / SQ3(D);
    love = (1.0 + love_h2 - 1.5 * love_k2);
    g0 = (gm + gs) * love;

#if 0
    sprintf(plot_title, "%.6f  %.9e  %.3e  %.2f  %.2f  %.2f",
           fmjd,
           (980 - g0) / 100.0,  // g in m/s2 units
           -g0 / 980.0,         // pendulum clock rate
           g0 * 1e6,            // delta g in ugal units
           gm * love * 1e6, gs * love * 1e6);
#endif

    last_ugals = ugals;
    ugals = g0 * 1.0E6;
    have_ugals = 1;
    tide_cm = (ugals * 0.17785) - 0.9766;  // emprical conversion from uGal to cm of displacement

    return ugals;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x250, %rsp            # imm = 0x250
movsd %xmm0, -0x8(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x18(%rbp)
movsd %xmm3, -0x20(%rbp)
movsd -0x8(%rbp), %xmm0
movsd 0x31714(%rip), %xmm1    # 0x171610
subsd %xmm1, %xmm0
movsd %xmm0, -0x138(%rbp)
movsd -0x138(%rbp), %xmm0
movsd 0x2f150(%rip), %xmm1    # 0x16f068
callq 0x94d0
movsd 0x2f113(%rip), %xmm1    # 0x16f038
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x138(%rbp), %xmm0
movsd 0x4ed22(%rip), %xmm1    # 0x18ec60
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
movsd 0x4e42c(%rip), %xmm1    # 0x18e380
divsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x4ece6(%rip), %xmm1    # 0x18ec50
mulsd %xmm1, %xmm0
movsd 0x4ece2(%rip), %xmm1    # 0x18ec58
addsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
movsd 0x4ecbc(%rip), %xmm2    # 0x18ec48
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd 0x4ec95(%rip), %xmm2    # 0x18ec40
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x4ec6b(%rip), %xmm1    # 0x18ec30
mulsd %xmm1, %xmm0
movsd 0x4ec67(%rip), %xmm1    # 0x18ec38
addsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
movsd 0x4ec41(%rip), %xmm2    # 0x18ec28
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
xorps %xmm2, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x4ebfd(%rip), %xmm1    # 0x18ec18
mulsd %xmm1, %xmm0
movsd 0x4ebf9(%rip), %xmm1    # 0x18ec20
addsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
movsd 0x4ebd3(%rip), %xmm2    # 0x18ec10
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd 0x4ebac(%rip), %xmm2    # 0x18ec08
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x4eb82(%rip), %xmm1    # 0x18ebf8
mulsd %xmm1, %xmm0
movsd 0x4eb7e(%rip), %xmm1    # 0x18ec00
addsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
movsd 0x4eb58(%rip), %xmm2    # 0x18ebf0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd 0x4eb31(%rip), %xmm2    # 0x18ebe8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x4eb07(%rip), %xmm1    # 0x18ebd8
mulsd %xmm1, %xmm0
movsd 0x4eb03(%rip), %xmm1    # 0x18ebe0
addsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
movsd 0x4eadd(%rip), %xmm2    # 0x18ebd0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
xorps %xmm2, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x38(%rbp), %xmm0
movsd 0x4ea99(%rip), %xmm1    # 0x18ebc0
mulsd %xmm1, %xmm0
movsd 0x4ea95(%rip), %xmm1    # 0x18ebc8
addsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
movsd 0x4ea6f(%rip), %xmm2    # 0x18ebb8
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd 0x4ea48(%rip), %xmm2    # 0x18ebb0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x96f0
movsd 0x4ea19(%rip), %xmm1    # 0x18eba0
mulsd %xmm1, %xmm0
movsd 0x4ea15(%rip), %xmm1    # 0x18eba8
addsd %xmm1, %xmm0
callq 0x9360
movsd %xmm0, -0x70(%rbp)
movsd -0x70(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1401b3
jp 0x1401b3
jmp 0x1401f9
movsd -0x40(%rbp), %xmm0
callq 0x9080
movaps %xmm0, %xmm1
movsd 0x4eaa0(%rip), %xmm0    # 0x18ec68
mulsd %xmm1, %xmm0
movsd %xmm0, -0x140(%rbp)
movsd -0x70(%rbp), %xmm0
callq 0x9080
movaps %xmm0, %xmm1
movsd -0x140(%rbp), %xmm0
divsd %xmm1, %xmm0
callq 0x9640
movsd %xmm0, -0x78(%rbp)
jmp 0x140201
xorps %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x28(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
movsd 0x42d35(%rip), %xmm2    # 0x182f48
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x2ee55(%rip), %xmm1    # 0x16f078
divsd %xmm1, %xmm0
movsd 0x31399(%rip), %xmm1    # 0x1715c8
mulsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x80(%rbp), %xmm0
addsd -0x60(%rbp), %xmm0
subsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x80(%rbp), %xmm0
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x250(%rbp)
movsd 0x2eeda(%rip), %xmm0    # 0x16f150
mulsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x248(%rbp)
movsd -0x60(%rbp), %xmm0
subsd -0x68(%rbp), %xmm0
callq 0x9080
movsd -0x250(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x248(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x96f0
movsd %xmm0, -0x230(%rbp)
movsd -0x78(%rbp), %xmm0
callq 0x96f0
movsd %xmm0, -0x238(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x9080
movsd %xmm0, -0x240(%rbp)
movsd -0x78(%rbp), %xmm0
callq 0x9080
movsd -0x240(%rbp), %xmm1
movsd -0x238(%rbp), %xmm2
movaps %xmm0, %xmm3
movsd -0x230(%rbp), %xmm0
mulsd %xmm3, %xmm1
movsd 0x4e9cc(%rip), %xmm3    # 0x18ece8
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x9080
movaps %xmm0, %xmm1
movsd 0x4e97b(%rip), %xmm0    # 0x18ecc0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x228(%rbp)
movsd -0x70(%rbp), %xmm0
callq 0x9080
movaps %xmm0, %xmm1
movsd -0x228(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd 0x2ece6(%rip), %xmm1    # 0x16f068
addsd -0xa0(%rbp), %xmm1
divsd %xmm1, %xmm0
callq 0x92e0
movaps %xmm0, %xmm1
movsd 0x2edb2(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0x40(%rbp), %xmm0
subsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd -0x50(%rbp), %xmm0
subsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd %xmm0, -0x220(%rbp)
movsd -0x50(%rbp), %xmm0
subsd -0x58(%rbp), %xmm0
callq 0x9080
movsd -0x220(%rbp), %xmm1
movsd 0x4e8dd(%rip), %xmm2    # 0x18ece0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x218(%rbp)
movsd -0x50(%rbp), %xmm1
subsd -0x58(%rbp), %xmm1
movsd 0x2ed2b(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x9080
movsd -0x218(%rbp), %xmm1
movsd 0x4e89a(%rip), %xmm2    # 0x18ecd8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x210(%rbp)
movsd -0x50(%rbp), %xmm0
movsd -0x60(%rbp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm1, %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x9080
movsd -0x210(%rbp), %xmm1
movsd 0x4e856(%rip), %xmm2    # 0x18ecd0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x208(%rbp)
movsd -0x50(%rbp), %xmm1
subsd -0x60(%rbp), %xmm1
movsd 0x2ecb4(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x9080
movsd -0x208(%rbp), %xmm1
movsd 0x4e813(%rip), %xmm2    # 0x18ecc8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0x2eba6(%rip), %xmm1    # 0x16f078
divsd %xmm1, %xmm0
movsd 0x310ea(%rip), %xmm1    # 0x1715c8
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm0
callq 0x9080
movsd %xmm0, -0x200(%rbp)
movsd -0x70(%rbp), %xmm0
callq 0x9080
movaps %xmm0, %xmm1
movsd -0x200(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1c0(%rbp)
movsd -0xc8(%rbp), %xmm0
callq 0x9080
movsd %xmm0, -0x1c8(%rbp)
movsd -0xd0(%rbp), %xmm0
callq 0x96f0
movsd %xmm0, -0x1d0(%rbp)
movsd 0x2eb3e(%rip), %xmm0    # 0x16f090
mulsd -0x70(%rbp), %xmm0
callq 0x96f0
movsd %xmm0, -0x1f8(%rbp)
movsd 0x2eb24(%rip), %xmm0    # 0x16f090
mulsd -0x70(%rbp), %xmm0
callq 0x96f0
movaps %xmm0, %xmm1
movsd -0x1f8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1e0(%rbp)
movsd -0xc8(%rbp), %xmm0
subsd -0x88(%rbp), %xmm0
callq 0x96f0
movsd %xmm0, -0x1d8(%rbp)
movsd 0x2eade(%rip), %xmm0    # 0x16f090
mulsd -0x70(%rbp), %xmm0
callq 0x9080
movsd %xmm0, -0x1f0(%rbp)
movsd 0x2eac4(%rip), %xmm0    # 0x16f090
mulsd -0x70(%rbp), %xmm0
callq 0x9080
movaps %xmm0, %xmm1
movsd -0x1f0(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1e8(%rbp)
movsd -0xc8(%rbp), %xmm0
addsd -0x88(%rbp), %xmm0
callq 0x96f0
movsd -0x1e8(%rbp), %xmm4
movsd -0x1e0(%rbp), %xmm3
movsd -0x1d8(%rbp), %xmm5
movsd -0x1d0(%rbp), %xmm1
movsd -0x1c8(%rbp), %xmm2
movaps %xmm0, %xmm6
movsd -0x1c0(%rbp), %xmm0
mulsd %xmm6, %xmm4
mulsd %xmm5, %xmm3
addsd %xmm4, %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd -0xd0(%rbp), %xmm0
callq 0x9080
movsd 0x4e656(%rip), %xmm1    # 0x18ecc0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x1a0(%rbp)
movsd -0x98(%rbp), %xmm0
callq 0x9080
movsd %xmm0, -0x1a8(%rbp)
movsd -0xd0(%rbp), %xmm0
callq 0x96f0
movsd %xmm0, -0x1b0(%rbp)
movsd -0x98(%rbp), %xmm0
subsd -0x90(%rbp), %xmm0
callq 0x96f0
movsd %xmm0, -0x1b8(%rbp)
movsd -0x98(%rbp), %xmm0
addsd -0x90(%rbp), %xmm0
callq 0x96f0
movsd -0x1b8(%rbp), %xmm3
movsd -0x1b0(%rbp), %xmm1
movsd -0x1a8(%rbp), %xmm2
movaps %xmm0, %xmm5
movsd -0x1a0(%rbp), %xmm0
movsd 0x4e5bb(%rip), %xmm4    # 0x18ecb8
mulsd %xmm5, %xmm4
movsd 0x4e5a7(%rip), %xmm5    # 0x18ecb0
mulsd %xmm5, %xmm3
addsd %xmm4, %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0xd0(%rbp), %xmm0
callq 0x9080
movsd %xmm0, -0x198(%rbp)
movsd -0xd0(%rbp), %xmm0
callq 0x9080
movaps %xmm0, %xmm1
movsd -0x198(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd 0x4e54a(%rip), %xmm1    # 0x18eca8
mulsd %xmm1, %xmm0
movsd 0x2e8fe(%rip), %xmm1    # 0x16f068
addsd %xmm1, %xmm0
callq 0x9280
movaps %xmm0, %xmm1
movsd 0x2e8ea(%rip), %xmm0    # 0x16f068
divsd %xmm1, %xmm0
movsd %xmm0, -0xe8(%rbp)
movsd -0xe8(%rbp), %xmm0
movsd 0x2e8b6(%rip), %xmm1    # 0x16f050
mulsd -0x20(%rbp), %xmm1
movsd 0x4e4f9(%rip), %xmm2    # 0x18eca0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd 0x4e4d9(%rip), %xmm0    # 0x18ec98
movsd %xmm0, -0xf8(%rbp)
movsd -0x48(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0x2e874(%rip), %xmm1    # 0x16f068
addsd %xmm1, %xmm0
movsd 0x4e490(%rip), %xmm1    # 0x18ec90
mulsd %xmm0, %xmm1
movsd 0x2e85c(%rip), %xmm0    # 0x16f068
divsd %xmm1, %xmm0
movsd %xmm0, -0x100(%rbp)
movsd 0x2e848(%rip), %xmm0    # 0x16f068
divsd 0x8e270(%rip), %xmm0    # 0x1cea98
movsd %xmm0, -0x190(%rbp)
movsd -0xf8(%rbp), %xmm0
mulsd 0x8e248(%rip), %xmm0    # 0x1cea88
movsd %xmm0, -0x188(%rbp)
movsd -0x50(%rbp), %xmm0
subsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x190(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x188(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x180(%rbp)
movsd -0xf8(%rbp), %xmm0
mulsd 0x8e1fe(%rip), %xmm0    # 0x1cea88
mulsd 0x8e1f6(%rip), %xmm0    # 0x1cea88
movsd %xmm0, -0x178(%rbp)
movsd -0x50(%rbp), %xmm1
subsd -0x58(%rbp), %xmm1
movsd 0x2e8a4(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x180(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x178(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x170(%rbp)
movsd 0x4e3a8(%rip), %xmm0    # 0x18ec88
mulsd -0xf8(%rbp), %xmm0
mulsd 0x8e190(%rip), %xmm0    # 0x1cea80
mulsd 0x8e190(%rip), %xmm0    # 0x1cea88
movsd %xmm0, -0x168(%rbp)
movsd -0x50(%rbp), %xmm0
movsd -0x60(%rbp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm1, %xmm0
addsd -0x58(%rbp), %xmm0
callq 0x96f0
movsd -0x170(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x168(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x158(%rbp)
movsd -0xf8(%rbp), %xmm0
mulsd 0x8e131(%rip), %xmm0    # 0x1cea80
mulsd 0x8e129(%rip), %xmm0    # 0x1cea80
movsd %xmm0, -0x160(%rbp)
movsd -0x50(%rbp), %xmm1
subsd -0x60(%rbp), %xmm1
movsd 0x2e7df(%rip), %xmm0    # 0x16f150
mulsd %xmm1, %xmm0
callq 0x96f0
movsd -0x160(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x158(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x2e6cb(%rip), %xmm0    # 0x16f068
divsd %xmm1, %xmm0
movsd %xmm0, -0x108(%rbp)
movsd 0x2e6b7(%rip), %xmm0    # 0x16f068
divsd 0x8e0d7(%rip), %xmm0    # 0x1cea90
movsd %xmm0, -0x148(%rbp)
movsd -0x100(%rbp), %xmm0
mulsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x150(%rbp)
movsd -0x60(%rbp), %xmm0
subsd -0x68(%rbp), %xmm0
callq 0x96f0
movsd -0x150(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x148(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x2e660(%rip), %xmm0    # 0x16f068
divsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movsd 0x8e03c(%rip), %xmm0    # 0x1cea58
mulsd 0x8e03c(%rip), %xmm0    # 0x1cea60
mulsd -0xf0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
mulsd -0xd8(%rbp), %xmm1
movsd 0x2e79c(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm1
movsd 0x2e6c8(%rip), %xmm2    # 0x16f118
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd -0x108(%rbp), %xmm1
mulsd -0x108(%rbp), %xmm1
mulsd -0x108(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x2e65c(%rip), %xmm1    # 0x16f0d8
mulsd 0x8dfd4(%rip), %xmm1    # 0x1cea58
mulsd 0x8dfd4(%rip), %xmm1    # 0x1cea60
mulsd -0xf0(%rbp), %xmm1
mulsd -0xf0(%rbp), %xmm1
movsd -0xd8(%rbp), %xmm2
mulsd -0xd8(%rbp), %xmm2
mulsd -0xd8(%rbp), %xmm2
movsd 0x2e724(%rip), %xmm3    # 0x16f1e0
mulsd -0xd8(%rbp), %xmm3
movq %xmm3, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm3
movsd 0x2e67d(%rip), %xmm4    # 0x16f160
mulsd %xmm4, %xmm2
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
movsd -0x108(%rbp), %xmm2
mulsd -0x108(%rbp), %xmm2
mulsd -0x108(%rbp), %xmm2
mulsd -0x108(%rbp), %xmm2
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
movsd 0x8df31(%rip), %xmm0    # 0x1cea58
mulsd 0x8df39(%rip), %xmm0    # 0x1cea68
mulsd -0xf0(%rbp), %xmm0
movsd -0xe0(%rbp), %xmm1
mulsd -0xe0(%rbp), %xmm1
movsd 0x2e691(%rip), %xmm2    # 0x16f1e0
mulsd %xmm2, %xmm1
movsd 0x2e5bd(%rip), %xmm2    # 0x16f118
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd -0x110(%rbp), %xmm1
mulsd -0x110(%rbp), %xmm1
mulsd -0x110(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x120(%rbp)
movsd 0x2e4d9(%rip), %xmm1    # 0x16f068
addsd 0x8df11(%rip), %xmm1    # 0x1ceaa8
movsd 0x8df11(%rip), %xmm0    # 0x1ceab0
movsd 0x4e0d9(%rip), %xmm2    # 0x18ec80
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x130(%rbp)
movsd -0x118(%rbp), %xmm0
addsd -0x120(%rbp), %xmm0
mulsd -0x130(%rbp), %xmm0
movsd %xmm0, -0x128(%rbp)
leaq 0x22b632(%rip), %rax    # 0x36c210
movsd (%rax), %xmm0
leaq 0x22b62f(%rip), %rax    # 0x36c218
movsd %xmm0, (%rax)
movsd 0x2e44b(%rip), %xmm0    # 0x16f040
mulsd -0x128(%rbp), %xmm0
leaq 0x22b60c(%rip), %rax    # 0x36c210
movsd %xmm0, (%rax)
leaq 0x22b64d(%rip), %rax    # 0x36c25c
movl $0x1, (%rax)
leaq 0x22b5f4(%rip), %rax    # 0x36c210
movsd (%rax), %xmm0
movsd 0x4e048(%rip), %xmm1    # 0x18ec70
mulsd %xmm1, %xmm0
movsd 0x4e044(%rip), %xmm1    # 0x18ec78
addsd %xmm1, %xmm0
leaq 0x22b5e1(%rip), %rax    # 0x36c220
movsd %xmm0, (%rax)
leaq 0x22b5c6(%rip), %rax    # 0x36c210
movsd (%rax), %xmm0
addq $0x250, %rsp            # imm = 0x250
popq %rbp
retq
nopw (%rax,%rax)