// File: /workspace/github_cpp_makefile_star2_O1/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 0x29e30(%rip), %xmm1    # 0x3f150
callq 0x6530
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
xorpd %xmm2, %xmm2
jne 0x15335
jnp 0x1534b
ucomisd %xmm0, %xmm2
movapd %xmm0, %xmm2
jbe 0x1534b
addsd 0x29e09(%rip), %xmm0    # 0x3f150
movapd %xmm0, %xmm2
movsd 0x29dfd(%rip), %xmm0    # 0x3f150
subsd %xmm2, %xmm0
movsd 0x2a359(%rip), %xmm7    # 0x3f6b8
movapd %xmm7, %xmm3
cmpltsd %xmm2, %xmm3
andpd %xmm3, %xmm0
movapd %xmm3, 0x70(%rsp)
movapd %xmm3, %xmm5
andnpd %xmm2, %xmm5
orpd %xmm0, %xmm5
movsd 0x29caa(%rip), %xmm3    # 0x3f030
movapd %xmm3, %xmm6
movsd 0x8(%rsp), %xmm4
subsd %xmm4, %xmm6
movapd %xmm5, %xmm0
subsd %xmm5, %xmm7
mulsd 0x2a364(%rip), %xmm7    # 0x3f708
movapd %xmm4, %xmm2
addsd %xmm3, %xmm2
divsd %xmm2, %xmm7
addsd 0x2a358(%rip), %xmm7    # 0x3f710
mulsd %xmm5, %xmm0
movapd %xmm7, %xmm2
mulsd %xmm4, %xmm2
movsd 0x2a2cc(%rip), %xmm3    # 0x3f698
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 0x29d3e(%rip), %xmm3    # 0x3f160
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 0x15450
sqrtsd %xmm0, %xmm0
jmp 0x15461
movapd %xmm3, 0x60(%rsp)
callq 0x63b0
movapd 0x60(%rsp), %xmm3
addsd %xmm3, %xmm0
movsd 0x2a2ab(%rip), %xmm1    # 0x3f718
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 0x29b4f(%rip), %xmm8    # 0x3f030
movapd %xmm8, %xmm1
subsd %xmm0, %xmm1
movsd 0x48(%rsp), %xmm4
movapd %xmm4, %xmm2
movapd 0x10(%rsp), %xmm9
mulsd %xmm9, %xmm2
movsd 0x8(%rsp), %xmm3
movapd %xmm3, %xmm0
movapd 0x20(%rsp), %xmm5
mulsd %xmm5, %xmm0
addsd %xmm2, %xmm0
subsd 0x50(%rsp), %xmm0
mulsd %xmm3, %xmm1
addsd %xmm4, %xmm1
movapd %xmm9, %xmm2
subsd %xmm5, %xmm2
mulsd %xmm3, %xmm2
subsd %xmm1, %xmm8
movapd 0x2a200(%rip), %xmm3    # 0x3f740
xorpd %xmm0, %xmm3
movsd 0x29c4c(%rip), %xmm4    # 0x3f198
movapd %xmm0, %xmm5
mulsd %xmm4, %xmm5
mulsd %xmm2, %xmm5
divsd %xmm1, %xmm5
movapd %xmm1, %xmm6
subsd %xmm5, %xmm6
movapd %xmm3, %xmm5
divsd %xmm6, %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
mulsd %xmm2, %xmm6
addsd %xmm1, %xmm6
mulsd %xmm5, %xmm5
mulsd %xmm8, %xmm5
movsd 0x2a193(%rip), %xmm7    # 0x3f720
divsd %xmm7, %xmm5
addsd %xmm6, %xmm5
divsd %xmm5, %xmm3
movapd %xmm3, %xmm5
mulsd %xmm3, %xmm5
mulsd %xmm3, %xmm4
mulsd %xmm2, %xmm4
addsd %xmm1, %xmm4
mulsd %xmm5, %xmm8
divsd %xmm7, %xmm8
addsd %xmm4, %xmm8
mulsd %xmm3, %xmm5
mulsd %xmm2, %xmm5
divsd 0x2a15c(%rip), %xmm5    # 0x3f728
addsd %xmm8, %xmm5
divsd %xmm5, %xmm0
movapd %xmm9, %xmm1
subsd %xmm0, %xmm1
movsd 0x29b6a(%rip), %xmm0    # 0x3f150
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