// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heathmsc.cpp
// Function: detide_(double*, int*, double*, double*, double*, double*)
int detide_(double *xsta, int *mjd, double *fmjd,
         double *xsun, double *xmon, double *dxtide)
{
    /* Initialized data */

    static double h20 = .6078;
    static double l20 = .0847;
    static double h3 = .292;
    static double l3 = .015;

    /* F2C generated locals */
    double d__1, d__2;

    /* Local variables */
    static double mass_ratio_moon__;
    static double rsta, rmon, rsun, p2mon, p3mon, x2mon, x3mon, p2sun, p3sun;
    static int i;
    static double x2sun, x3sun;
    static double t, scmon;
    static double h2, scsun, l2;
    static double re, cosphi, dmjdtt, fmjdtt, tsectt;
    static double fac2mon, fac3mon, fac2sun, fac3sun;
    static double mass_ratio_sun__;
    static double fhr, scm, scs, tsecgps, xcorsta[3];

    static double sinphi;
    static double cosla, sinla;
    static double dr, dn;

    if(xsta == 0) return (-1);
    if(mjd == 0) return (-1); 
    if(fmjd == 0) return (-1); 
    if(xsun == 0) return (-1); 
    if(xmon == 0) return (-1); 
    if(dxtide == 0) return (-1); 

/* computation of tidal corrections of station displacements caused */
/*    by lunar and solar gravitational attraction */
/* step 1 (here general degree 2 and 3 corrections + */
/*         call st1idiu + call st1isem + call st1l1) */
/*   + step 2 (call step2diu + call step2lon + call step2idiu) */
/* it has been decided that the step 3 un-correction for permanent tide */
/* would *not* be applied in order to avoid jump in the reference frame */
/*** (this step 3 must added in order to get the mean tide station position*/
/* and to be conformed with the iag resolution.) */
/* inputs */
/***   xsta(i),i=1,2,3   -- geocentric position of the station (ITRF/ECEF)
*/
/*   xsun(i),i=1,2,3   -- geoc. position of the sun (ECEF) */
/*   xmon(i),i=1,2,3   -- geoc. position of the moon (ECEF) */
/***   mjd,fmjd          -- modified julian day (and fraction) (in GPS time)*/
/****old calling sequence****************************************************/
/***   dmjd               -- time in mean julian date (including day fract
ion)*/
/*   fhr=hr+zmin/60.+sec/3600.   -- hr in the day */
/* outputs */
/*   dxtide(i),i=1,2,3           -- displacement vector (ITRF) */
/* author iers 1996 :  v. dehant, s. mathews and j. gipson */
/*    (test between two subroutines) */
/* author iers 2000 :  v. dehant, c. bruyninx and s. mathews */
/*    (test in the bernese program by c. bruyninx) */
/* created:  96/03/23 (see above) */
/* modified from dehanttideinelMJD.f by Dennis Milbert 2006sep10 */
/* bug fix regarding fhr (changed calling sequence, too) */
/* modified to reflect table 7.5a and b IERS Conventions 2003 */
/* modified to use TT time system to call step 2 functions */
/* sign correction by V.Dehant to match eq.16b, p.81, Conventions */
/* applied by Dennis Milbert 2007may05 */
/*** nominal second degree and third degree love numbers and shida numbers
*/
    /* Function Body */
/* internal support for new calling sequence */
/* also convert GPS time into TT time */
    tsecgps = *fmjd * 86400.;
/* *** GPS time (sec of */
    tsectt = gps2tt_(&tsecgps);
/* *** TT  time (sec of */
    fmjdtt = tsectt / 86400.;
/* *** TT  time (fract. */
    dmjdtt = *mjd + fmjdtt;
/* commented line was live code in dehanttideinelMJD.f */
/* changed on the suggestion of Dr. Don Kim, UNB -- 09mar21 */
/* Julian date for 2000 January 1 00:00:00.0 UT is  JD 2451544.5 */
/* MJD         for 2000 January 1 00:00:00.0 UT is MJD   51544.0 */
/***** t=(dmjdtt-51545.d0)/36525.d0                !*** days to centuries,
 TT*/
/* *** float MJD in TT */
    t = (dmjdtt - 51544.) / 36525.;
/* *** days to centuries */
    fhr = (dmjdtt - (int) dmjdtt) * 24.;
/* scalar product of station vector with sun/moon vector */
/* *** hours in the day, */
    sprod_(&xsta[0], &xsun[0], &scs, &rsta, &rsun);
    sprod_(&xsta[0], &xmon[0], &scm, &rsta, &rmon);
    scsun = scs / rsta / rsun;
    scmon = scm / rsta / rmon;
/* computation of new h2 and l2 */
    cosphi = sqrt(xsta[0] * xsta[0] + xsta[1] * xsta[1]) / rsta;
    h2 = h20 - (1. - cosphi * 1.5 * cosphi) * 6e-4;
    l2 = l20 + (1. - cosphi * 1.5 * cosphi) * 2e-4;
/* p2-term */
    p2sun = (h2 / 2. - l2) * 3. * scsun * scsun - h2 / 2.;
    p2mon = (h2 / 2. - l2) * 3. * scmon * scmon - h2 / 2.;
/* p3-term */
/* Computing 3rd power */
    d__1 = scsun, d__2 = d__1;
    p3sun = (h3 - l3 * 3.) * 2.5 * (d__2 * (d__1 * d__1)) + (l3 - h3) * 1.5 * 
            scsun;
/* Computing 3rd power */
    d__1 = scmon, d__2 = d__1;
    p3mon = (h3 - l3 * 3.) * 2.5 * (d__2 * (d__1 * d__1)) + (l3 - h3) * 1.5 * 
            scmon;
/* term in direction of sun/moon vector */
    x2sun = l2 * 3. * scsun;
    x2mon = l2 * 3. * scmon;
    x3sun = l3 * 3. / 2. * (scsun * 5. * scsun - 1.);
    x3mon = l3 * 3. / 2. * (scmon * 5. * scmon - 1.);
/* factors for sun/moon */
    mass_ratio_sun__ = 332945.943062;
    mass_ratio_moon__ = .012300034;
    re = 6378136.55;
/* Computing 3rd power */
    d__1 = re / rsun, d__2 = d__1;
    fac2sun = mass_ratio_sun__ * re * (d__2 * (d__1 * d__1));
/* Computing 3rd power */
    d__1 = re / rmon, d__2 = d__1;
    fac2mon = mass_ratio_moon__ * re * (d__2 * (d__1 * d__1));
    fac3sun = fac2sun * (re / rsun);
    fac3mon = fac2mon * (re / rmon);
/* total displacement */
    for(i=0; i<=2; ++i) {
        dxtide[i] = fac2sun * (x2sun * xsun[i] / rsun + p2sun * xsta[i] / 
                rsta) + fac2mon * (x2mon * xmon[i] / rmon + p2mon * xsta[i] / 
                rsta) + fac3sun * (x3sun * xsun[i] / rsun + p3sun * xsta[i] / 
                rsta) + fac3mon * (x3mon * xmon[i] / rmon + p3mon * xsta[i] / 
                rsta);
    }
    zero_vec8__(xcorsta);

/* corrections for the out-of-phase part of love numbers */
/*     (part h_2^(0)i and l_2^(0)i ) */
/* first, for the diurnal band */
    st1idiu_(&xsta[0], &xsun[0], &xmon[0], &fac2sun, &fac2mon, xcorsta);
    dxtide[0] += xcorsta[0];
    dxtide[1] += xcorsta[1];
    dxtide[2] += xcorsta[2];
/* second, for the semi-diurnal band */
    st1isem_(&xsta[0], &xsun[0], &xmon[0], &fac2sun, &fac2mon, xcorsta);
    dxtide[0] += xcorsta[0];
    dxtide[1] += xcorsta[1];
    dxtide[2] += xcorsta[2];
/*** corrections for the latitude dependence of love numbers (part l^(1) ) */
    st1l1_(&xsta[0], &xsun[0], &xmon[0], &fac2sun, &fac2mon, xcorsta);
    dxtide[0] += xcorsta[0];
    dxtide[1] += xcorsta[1];
    dxtide[2] += xcorsta[2];

/* consider corrections for step 2 */
/* corrections for the diurnal band: */
/*  first, we need to know the date converted in julian centuries */
/***  this is now handled at top of code   (also convert to TT time system) */
/* **** t=(dmjd-51545.)/36525. */
/***** fhr=dmjd-int(dmjd)             !*** this is/was a buggy line (day vs. hr) */
/*  second, the diurnal band corrections, */
/*   (in-phase and out-of-phase frequency dependence): */
    step2diu_(&xsta[0], &fhr, &t, xcorsta);
    dxtide[0] += xcorsta[0];
    dxtide[1] += xcorsta[1];
    dxtide[2] += xcorsta[2];
/*  corrections for the long-period band, */
/*   (in-phase and out-of-phase frequency dependence): */
    step2lon_(&xsta[0], &fhr, &t, xcorsta);
    dxtide[0] += xcorsta[0];
    dxtide[1] += xcorsta[1];
    dxtide[2] += xcorsta[2];

/* consider corrections for step 3 */
/* ----------------------------------------------------------------------- */
/* The code below is commented to prevent restoring deformation */
/* due to permanent tide.  All the code above removes */
/* total tidal deformation with conventional Love numbers. */
/* The code above realizes a conventional tide free crust (i.e. ITRF). */
/* This does NOT conform to Resolution 16 of the 18th General Assembly */
/* of the IAG (1983).  This resolution has not been implemented by */
/* the space geodesy community in general (c.f. IERS Conventions 2003). */

/* ----------------------------------------------------------------------- */
/*** uncorrect for the permanent tide  (only if you want mean tide system)
*/
   if(tide_options & CALC_MEAN_TIDES) {
       sinphi = xsta[2] / rsta;
       cosphi = sqrt((xsta[0]*xsta[0])  + (xsta[1]*xsta[1])) / rsta;
       cosla = xsta[0] / cosphi / rsta;
       sinla = xsta[0] / cosphi / rsta;
       dr = -sqrt(5./4./PI) * h2 * 0.31460 * (3./2. * (sinphi*sinphi) - 0.5);
       dn = -sqrt(5./4./PI) * l2 * 0.31460 * 3. * cosphi*sinphi;
       dxtide[0] = dxtide[0]-dr*cosla*cosphi+dn*cosla*sinphi;
       dxtide[1] = dxtide[1]-dr*sinla*cosphi+dn*sinla*sinphi;
       dxtide[2] = dxtide[2]-dr*sinphi-dn*cosphi;
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, %r12
movq %rdi, %r14
testq %rdi, %rdi
sete %al
testq %rsi, %rsi
sete %cl
orb %al, %cl
testq %rdx, %rdx
sete %al
testq %r12, %r12
sete %dil
orb %al, %dil
orb %cl, %dil
testq %r8, %r8
sete %al
testq %r9, %r9
sete %cl
orb %al, %cl
orb %dil, %cl
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
jne 0xeba4c
movq %r9, %rbx
movq %r8, %r15
movsd 0x1dc38(%rip), %xmm0    # 0x109018
movsd (%rdx), %xmm1
mulsd %xmm0, %xmm1
addsd 0x40d90(%rip), %xmm1    # 0x12c180
divsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2sdl (%rsi), %xmm0
addsd %xmm1, %xmm0
movsd 0x40f19(%rip), %xmm1    # 0x12c320
addsd %xmm0, %xmm1
divsd 0x40345(%rip), %xmm1    # 0x12b758
movsd %xmm1, 0x29017d(%rip)   # 0x37b598
cvttpd2dq %xmm0, %xmm1
cvtdq2pd %xmm1, %xmm1
subsd %xmm1, %xmm0
mulsd 0x1dc11(%rip), %xmm0    # 0x109040
movsd %xmm0, 0x290199(%rip)   # 0x37b5d0
leaq 0x2901a2(%rip), %rdx    # 0x37b5e0
leaq 0x29013b(%rip), %r13    # 0x37b580
leaq 0x290144(%rip), %r8     # 0x37b590
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rcx
callq 0xebb87
leaq 0x290177(%rip), %rdx    # 0x37b5d8
leaq 0x290120(%rip), %r8     # 0x37b588
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rcx
callq 0xebb87
movsd 0x290162(%rip), %xmm0   # 0x37b5e0
movsd 0x2900fa(%rip), %xmm1   # 0x37b580
divsd %xmm1, %xmm0
divsd 0x2900fe(%rip), %xmm0   # 0x37b590
movsd %xmm0, 0x290116(%rip)   # 0x37b5b0
movsd 0x290136(%rip), %xmm0   # 0x37b5d8
divsd %xmm1, %xmm0
divsd 0x2900da(%rip), %xmm0   # 0x37b588
movsd %xmm0, 0x2900ea(%rip)   # 0x37b5a0
movsd (%r14), %xmm0
movsd 0x8(%r14), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xeb4dd
sqrtsd %xmm0, %xmm0
jmp 0xeb4e2
callq 0x9270
divsd 0x290096(%rip), %xmm0   # 0x37b580
movsd 0x408be(%rip), %xmm2    # 0x12bdb0
mulsd %xmm0, %xmm2
mulsd %xmm0, %xmm2
addsd 0x1db6e(%rip), %xmm2    # 0x109070
movsd 0x40e1e(%rip), %xmm3    # 0x12c328
mulsd %xmm2, %xmm3
addsd 0x40e1a(%rip), %xmm3    # 0x12c330
movsd %xmm3, 0x29008a(%rip)   # 0x37b5a8
mulsd 0x40e12(%rip), %xmm2    # 0x12c338
addsd 0x40e12(%rip), %xmm2    # 0x12c340
movsd %xmm2, 0x290082(%rip)   # 0x37b5b8
mulsd 0x1db2a(%rip), %xmm3    # 0x109068
movapd %xmm3, %xmm0
subsd %xmm2, %xmm0
movsd 0x204b9(%rip), %xmm9    # 0x10ba08
mulsd %xmm9, %xmm0
movsd 0x290054(%rip), %xmm7   # 0x37b5b0
movapd %xmm7, %xmm1
mulsd %xmm0, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm3, %xmm1
movsd %xmm1, -0x38(%rbp)
movsd 0x290026(%rip), %xmm8   # 0x37b5a0
mulsd %xmm8, %xmm0
mulsd %xmm8, %xmm0
subsd %xmm3, %xmm0
movsd %xmm0, -0x40(%rbp)
movapd %xmm7, %xmm0
mulsd %xmm7, %xmm0
mulsd %xmm7, %xmm0
movsd 0x40da6(%rip), %xmm10   # 0x12c348
movapd %xmm7, %xmm3
movsd 0x1db8a(%rip), %xmm5    # 0x109138
movapd %xmm7, %xmm6
mulsd %xmm5, %xmm6
mulsd %xmm7, %xmm6
mulsd %xmm10, %xmm7
movsd 0x40d88(%rip), %xmm11   # 0x12c350
mulsd %xmm11, %xmm0
addsd %xmm7, %xmm0
movsd %xmm0, -0x30(%rbp)
movapd %xmm8, %xmm7
mulsd %xmm8, %xmm7
mulsd %xmm8, %xmm7
mulsd %xmm8, %xmm10
mulsd %xmm11, %xmm7
addsd %xmm10, %xmm7
mulsd %xmm9, %xmm2
mulsd %xmm2, %xmm3
mulsd %xmm8, %xmm2
movsd 0x1daed(%rip), %xmm9    # 0x1090f8
addsd %xmm9, %xmm6
movsd 0x40d3f(%rip), %xmm10   # 0x12c358
mulsd %xmm10, %xmm6
mulsd %xmm8, %xmm5
mulsd %xmm8, %xmm5
addsd %xmm9, %xmm5
mulsd %xmm10, %xmm5
movsd 0x40d25(%rip), %xmm10   # 0x12c360
movapd %xmm10, %xmm11
divsd 0x28ff47(%rip), %xmm11  # 0x37b590
movapd %xmm11, %xmm8
mulsd %xmm11, %xmm8
mulsd %xmm11, %xmm8
mulsd 0x40d07(%rip), %xmm8    # 0x12c368
movsd %xmm8, 0x28ff5e(%rip)   # 0x37b5c8
divsd 0x28ff15(%rip), %xmm10  # 0x37b588
movapd %xmm10, %xmm9
mulsd %xmm10, %xmm9
mulsd %xmm10, %xmm9
mulsd 0x40ce5(%rip), %xmm9    # 0x12c370
movsd %xmm9, 0x28ff2c(%rip)   # 0x37b5c0
mulsd %xmm11, %xmm8
mulsd %xmm10, %xmm9
xorl %eax, %eax
movsd (%r12,%rax,8), %xmm12
movapd %xmm3, %xmm13
mulsd %xmm12, %xmm13
movsd 0x28fed7(%rip), %xmm15  # 0x37b590
divsd %xmm15, %xmm13
movsd (%r14,%rax,8), %xmm10
movsd -0x38(%rbp), %xmm14
mulsd %xmm10, %xmm14
movsd 0x28fea8(%rip), %xmm11  # 0x37b580
divsd %xmm11, %xmm14
addsd %xmm13, %xmm14
movsd (%r15,%rax,8), %xmm13
movapd %xmm2, %xmm1
mulsd %xmm13, %xmm1
movsd 0x28fe8f(%rip), %xmm0   # 0x37b588
divsd %xmm0, %xmm1
movsd -0x40(%rbp), %xmm4
mulsd %xmm10, %xmm4
divsd %xmm11, %xmm4
addsd %xmm1, %xmm4
mulsd 0x28fea8(%rip), %xmm4   # 0x37b5c0
mulsd 0x28fea7(%rip), %xmm14  # 0x37b5c8
addsd %xmm4, %xmm14
mulsd %xmm6, %xmm12
divsd %xmm15, %xmm12
movsd -0x30(%rbp), %xmm1
mulsd %xmm10, %xmm1
divsd %xmm11, %xmm1
addsd %xmm12, %xmm1
mulsd %xmm8, %xmm1
addsd %xmm14, %xmm1
mulsd %xmm5, %xmm13
divsd %xmm0, %xmm13
mulsd %xmm7, %xmm10
divsd %xmm11, %xmm10
addsd %xmm13, %xmm10
mulsd %xmm9, %xmm10
addsd %xmm1, %xmm10
movsd %xmm10, (%rbx,%rax,8)
incq %rax
cmpq $0x3, %rax
jne 0xeb6a0
xorpd %xmm0, %xmm0
movapd %xmm0, 0x28fe60(%rip)   # 0x37b5f0
movq $0x0, 0x28fe65(%rip) # 0x37b600
leaq 0x28fe4e(%rip), %r9     # 0x37b5f0
leaq 0x28fe1f(%rip), %rcx    # 0x37b5c8
leaq 0x28fe10(%rip), %r13    # 0x37b5c0
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %r13, %r8
callq 0xebcb3
movsd 0x28fe27(%rip), %xmm0   # 0x37b5f0
addsd (%rbx), %xmm0
movsd %xmm0, (%rbx)
movsd 0x28fe1f(%rip), %xmm0   # 0x37b5f8
addsd 0x8(%rbx), %xmm0
movsd %xmm0, 0x8(%rbx)
movsd 0x28fe15(%rip), %xmm0   # 0x37b600
addsd 0x10(%rbx), %xmm0
movsd %xmm0, 0x10(%rbx)
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
leaq 0x28fdc3(%rip), %rcx    # 0x37b5c8
movq %r13, %r8
leaq 0x28fde1(%rip), %r9     # 0x37b5f0
callq 0xec072
movsd 0x28fdd4(%rip), %xmm0   # 0x37b5f0
addsd (%rbx), %xmm0
movsd %xmm0, (%rbx)
movsd 0x28fdcc(%rip), %xmm0   # 0x37b5f8
addsd 0x8(%rbx), %xmm0
movsd %xmm0, 0x8(%rbx)
movsd 0x28fdc2(%rip), %xmm0   # 0x37b600
addsd 0x10(%rbx), %xmm0
movsd %xmm0, 0x10(%rbx)
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
leaq 0x28fd70(%rip), %rcx    # 0x37b5c8
movq %r13, %r8
leaq 0x28fd8e(%rip), %r13    # 0x37b5f0
movq %r13, %r9
callq 0xec459
movsd 0x28fd7e(%rip), %xmm0   # 0x37b5f0
addsd (%rbx), %xmm0
movsd %xmm0, (%rbx)
movsd 0x28fd76(%rip), %xmm0   # 0x37b5f8
addsd 0x8(%rbx), %xmm0
movsd %xmm0, 0x8(%rbx)
movsd 0x28fd6c(%rip), %xmm0   # 0x37b600
addsd 0x10(%rbx), %xmm0
movsd %xmm0, 0x10(%rbx)
leaq 0x28fd2b(%rip), %r15    # 0x37b5d0
leaq 0x28fcec(%rip), %r12    # 0x37b598
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0xec9aa
movsd 0x28fd2b(%rip), %xmm0   # 0x37b5f0
addsd (%rbx), %xmm0
movsd %xmm0, (%rbx)
movsd 0x28fd23(%rip), %xmm0   # 0x37b5f8
addsd 0x8(%rbx), %xmm0
movsd %xmm0, 0x8(%rbx)
movsd 0x28fd19(%rip), %xmm0   # 0x37b600
addsd 0x10(%rbx), %xmm0
movsd %xmm0, 0x10(%rbx)
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0xed11f
movsd 0x28fce6(%rip), %xmm0   # 0x37b5f0
addsd (%rbx), %xmm0
movsd %xmm0, (%rbx)
movsd 0x28fcde(%rip), %xmm0   # 0x37b5f8
addsd 0x8(%rbx), %xmm0
movsd %xmm0, 0x8(%rbx)
movsd 0x28fcd4(%rip), %xmm0   # 0x37b600
addsd 0x10(%rbx), %xmm0
movsd %xmm0, 0x10(%rbx)
leaq 0x22174f(%rip), %rax    # 0x30d08c
xorl %r13d, %r13d
testb $0x2, (%rax)
je 0xeba4c
movsd 0x10(%r14), %xmm0
divsd 0x28fc29(%rip), %xmm0   # 0x37b580
movsd %xmm0, 0x28fca9(%rip)   # 0x37b608
movsd (%r14), %xmm0
movsd 0x8(%r14), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xeb986
sqrtsd %xmm0, %xmm0
jmp 0xeb98b
callq 0x9270
movsd 0x28fbed(%rip), %xmm5   # 0x37b580
divsd %xmm5, %xmm0
movsd (%r14), %xmm3
divsd %xmm0, %xmm3
movsd 0x409d0(%rip), %xmm1    # 0x12c378
movsd 0x28fbf8(%rip), %xmm2   # 0x37b5a8
mulsd %xmm1, %xmm2
movsd 0x28fc4c(%rip), %xmm4   # 0x37b608
movapd %xmm4, %xmm6
mulsd %xmm4, %xmm6
mulsd 0x1d6ec(%rip), %xmm6    # 0x1090b8
addsd 0x1ffac(%rip), %xmm6    # 0x10b980
mulsd 0x28fbdc(%rip), %xmm1   # 0x37b5b8
mulsd 0x4099c(%rip), %xmm1    # 0x12c380
divsd %xmm5, %xmm3
mulsd 0x20018(%rip), %xmm1    # 0x10ba08
mulsd %xmm0, %xmm1
mulsd %xmm4, %xmm1
mulsd 0x40988(%rip), %xmm2    # 0x12c388
mulsd %xmm6, %xmm2
movapd %xmm3, %xmm5
mulsd %xmm2, %xmm5
mulsd %xmm0, %xmm5
movsd (%rbx), %xmm6
addsd %xmm5, %xmm6
mulsd %xmm1, %xmm3
mulsd %xmm4, %xmm3
addsd %xmm3, %xmm6
movsd %xmm6, (%rbx)
addsd 0x8(%rbx), %xmm5
addsd %xmm3, %xmm5
movsd %xmm5, 0x8(%rbx)
mulsd %xmm4, %xmm2
addsd 0x10(%rbx), %xmm2
mulsd %xmm0, %xmm1
subsd %xmm1, %xmm2
movsd %xmm2, 0x10(%rbx)
movl %r13d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq