// File: /workspace/github_cpp_makefile_star2_O3/j-faria[P]kima/src/RVmodel.cpp
// Function: kepler::kepler(double, double)
double kepler(double M, double ecc)
    {
        const double two_pi = 2 * M_PI;

        // Wrap M into the range [0, 2*pi]
        M = npy_mod(M, two_pi);

        //
        bool high = M > M_PI;
        if (high)
            M = two_pi - M;

        // Get the starter
        double ome = 1.0 - ecc;
        double E = get_markley_starter(M, ecc, ome);

        // Refine this estimate using a high order Newton step
        E = refine_estimate(M, ecc, ome, E);

        if (high)
            E = two_pi - E;

        return E;
    }

// Assembly:
subq $0x88, %rsp
movsd %xmm1, 0x8(%rsp)
movsd 0x27ee3(%rip), %xmm1    # 0x3d150
callq 0x6530
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
xorpd %xmm2, %xmm2
jne 0x15282
jnp 0x15298
ucomisd %xmm0, %xmm2
movapd %xmm0, %xmm2
jbe 0x15298
addsd 0x27ebc(%rip), %xmm0    # 0x3d150
movapd %xmm0, %xmm2
movsd 0x27eb0(%rip), %xmm0    # 0x3d150
subsd %xmm2, %xmm0
movsd 0x28434(%rip), %xmm7    # 0x3d6e0
movapd %xmm7, %xmm3
cmpltsd %xmm2, %xmm3
andpd %xmm3, %xmm0
movapd %xmm3, 0x70(%rsp)
movapd %xmm3, %xmm5
andnpd %xmm2, %xmm5
orpd %xmm0, %xmm5
movsd 0x27d5d(%rip), %xmm3    # 0x3d030
movapd %xmm3, %xmm6
movsd 0x8(%rsp), %xmm4
subsd %xmm4, %xmm6
movapd %xmm5, %xmm0
subsd %xmm5, %xmm7
mulsd 0x2843f(%rip), %xmm7    # 0x3d730
movapd %xmm4, %xmm2
addsd %xmm3, %xmm2
divsd %xmm2, %xmm7
addsd 0x28433(%rip), %xmm7    # 0x3d738
mulsd %xmm5, %xmm0
movapd %xmm7, %xmm2
mulsd %xmm4, %xmm2
movsd 0x283a7(%rip), %xmm3    # 0x3d6c0
movapd %xmm6, %xmm4
mulsd %xmm3, %xmm4
addsd %xmm2, %xmm4
mulsd %xmm4, %xmm7
mulsd %xmm7, %xmm3
movsd %xmm4, 0x40(%rsp)
movapd %xmm4, %xmm2
subsd %xmm6, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm0, %xmm2
movapd %xmm5, 0x50(%rsp)
mulsd %xmm5, %xmm2
addsd %xmm7, %xmm7
movsd %xmm6, 0x48(%rsp)
mulsd %xmm6, %xmm7
subsd %xmm0, %xmm7
movapd %xmm7, %xmm0
mulsd %xmm7, %xmm0
movapd 0x27df1(%rip), %xmm3    # 0x3d160
andpd %xmm2, %xmm3
movapd %xmm2, 0x10(%rsp)
mulsd %xmm2, %xmm2
movsd %xmm0, 0x38(%rsp)
movsd %xmm7, 0x20(%rsp)
mulsd %xmm7, %xmm0
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0x1539d
sqrtsd %xmm0, %xmm0
jmp 0x153ae
movapd %xmm3, 0x60(%rsp)
callq 0x63b0
movapd 0x60(%rsp), %xmm3
addsd %xmm3, %xmm0
movsd 0x28386(%rip), %xmm1    # 0x3d740
callq 0x66f0
movapd 0x10(%rsp), %xmm1
addsd %xmm1, %xmm1
mulsd %xmm0, %xmm1
movsd 0x20(%rsp), %xmm2
mulsd %xmm0, %xmm2
mulsd %xmm0, %xmm0
addsd %xmm2, %xmm0
movsd 0x38(%rsp), %xmm2
addsd %xmm0, %xmm2
divsd %xmm2, %xmm1
addsd 0x50(%rsp), %xmm1
divsd 0x40(%rsp), %xmm1
movapd %xmm1, 0x10(%rsp)
movapd %xmm1, %xmm0
callq 0x60b0
movapd 0x10(%rsp), %xmm1
movapd %xmm1, %xmm2
subsd %xmm0, %xmm2
movapd %xmm2, 0x20(%rsp)
movapd %xmm1, %xmm0
callq 0x6790
movsd 0x27c03(%rip), %xmm7    # 0x3d030
movapd %xmm7, %xmm1
subsd %xmm0, %xmm1
movsd 0x48(%rsp), %xmm3
movapd %xmm3, %xmm2
movapd 0x10(%rsp), %xmm8
mulsd %xmm8, %xmm2
movsd 0x8(%rsp), %xmm6
movapd %xmm6, %xmm0
movapd 0x20(%rsp), %xmm4
mulsd %xmm4, %xmm0
addsd %xmm2, %xmm0
subsd 0x50(%rsp), %xmm0
mulsd %xmm6, %xmm1
addsd %xmm3, %xmm1
movapd %xmm8, %xmm3
subsd %xmm4, %xmm3
movapd 0x282de(%rip), %xmm4    # 0x3d760
xorpd %xmm0, %xmm4
movsd 0x27d0a(%rip), %xmm2    # 0x3d198
movapd %xmm0, %xmm5
mulsd %xmm2, %xmm5
mulsd %xmm6, %xmm3
subsd %xmm1, %xmm7
mulsd %xmm3, %xmm5
divsd %xmm1, %xmm5
movapd %xmm1, %xmm6
subsd %xmm5, %xmm6
movapd %xmm4, %xmm5
divsd %xmm6, %xmm5
movapd %xmm5, %xmm6
mulsd %xmm2, %xmm6
mulsd %xmm3, %xmm6
addsd %xmm1, %xmm6
mulsd %xmm5, %xmm5
mulsd %xmm7, %xmm5
divsd 0x28272(%rip), %xmm5    # 0x3d748
addsd %xmm6, %xmm5
divsd %xmm5, %xmm4
movapd %xmm4, %xmm5
mulsd %xmm4, %xmm5
mulsd %xmm4, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm5, %xmm4
unpcklpd %xmm4, %xmm7            # xmm7 = xmm7[0],xmm4[0]
unpcklpd %xmm3, %xmm5            # xmm5 = xmm5[0],xmm3[0]
mulpd %xmm7, %xmm5
divpd 0x2828a(%rip), %xmm5    # 0x3d790
addsd %xmm1, %xmm2
addsd %xmm5, %xmm2
unpckhpd %xmm5, %xmm5            # xmm5 = xmm5[1,1]
subsd %xmm5, %xmm2
divsd %xmm2, %xmm0
movapd %xmm8, %xmm1
subsd %xmm0, %xmm1
movsd 0x27c25(%rip), %xmm0    # 0x3d150
subsd %xmm1, %xmm0
movapd %xmm1, %xmm3
movapd 0x70(%rsp), %xmm2
movapd %xmm2, %xmm1
andnpd %xmm3, %xmm1
andpd %xmm2, %xmm0
orpd %xmm1, %xmm0
addq $0x88, %rsp
retq
nop