// File: /workspace/github_cpp_makefile_star2_O1/mouda[P]LTE_random_access-simulate/specialfunctions.cpp
// Function: alglib_impl::ellipticintegralkhighprecision(double, alglib_impl::ae_state*)
double ellipticintegralkhighprecision(double m1, ae_state *_state)
{
    double p;
    double q;
    double result;


    if( ae_fp_less_eq(m1,ae_machineepsilon) )
    {
        result = 1.3862943611198906188E0-0.5*ae_log(m1, _state);
    }
    else
    {
        p = 1.37982864606273237150E-4;
        p = p*m1+2.28025724005875567385E-3;
        p = p*m1+7.97404013220415179367E-3;
        p = p*m1+9.85821379021226008714E-3;
        p = p*m1+6.87489687449949877925E-3;
        p = p*m1+6.18901033637687613229E-3;
        p = p*m1+8.79078273952743772254E-3;
        p = p*m1+1.49380448916805252718E-2;
        p = p*m1+3.08851465246711995998E-2;
        p = p*m1+9.65735902811690126535E-2;
        p = p*m1+1.38629436111989062502E0;
        q = 2.94078955048598507511E-5;
        q = q*m1+9.14184723865917226571E-4;
        q = q*m1+5.94058303753167793257E-3;
        q = q*m1+1.54850516649762399335E-2;
        q = q*m1+2.39089602715924892727E-2;
        q = q*m1+3.01204715227604046988E-2;
        q = q*m1+3.73774314173823228969E-2;
        q = q*m1+4.88280347570998239232E-2;
        q = q*m1+7.03124996963957469739E-2;
        q = q*m1+1.24999999999870820058E-1;
        q = q*m1+4.99999999999999999821E-1;
        result = p-q*ae_log(m1, _state);
    }
    return result;
}

// Assembly:
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
movsd 0x26f6d(%rip), %xmm1    # 0x34920
movsd %xmm0, 0x8(%rsp)
callq 0x2631e
testb %al, %al
je 0xd9e5
movsd 0x8(%rsp), %xmm0
movq %rbx, %rdi
callq 0x266d6
mulsd 0x26ab0(%rip), %xmm0    # 0x34488
addsd 0x27d10(%rip), %xmm0    # 0x356f0
jmp 0xdb13
movsd 0x27cb3(%rip), %xmm1    # 0x356a0
movsd 0x8(%rsp), %xmm0
mulsd %xmm0, %xmm1
addsd 0x27ca9(%rip), %xmm1    # 0x356a8
mulsd %xmm0, %xmm1
addsd 0x27ca5(%rip), %xmm1    # 0x356b0
mulsd %xmm0, %xmm1
addsd 0x27ca1(%rip), %xmm1    # 0x356b8
mulsd %xmm0, %xmm1
addsd 0x27c9d(%rip), %xmm1    # 0x356c0
mulsd %xmm0, %xmm1
addsd 0x27c99(%rip), %xmm1    # 0x356c8
mulsd %xmm0, %xmm1
addsd 0x27c95(%rip), %xmm1    # 0x356d0
mulsd %xmm0, %xmm1
addsd 0x27c91(%rip), %xmm1    # 0x356d8
mulsd %xmm0, %xmm1
addsd 0x27c8d(%rip), %xmm1    # 0x356e0
mulsd %xmm0, %xmm1
addsd 0x27c89(%rip), %xmm1    # 0x356e8
mulsd %xmm0, %xmm1
addsd 0x27c85(%rip), %xmm1    # 0x356f0
movsd %xmm1, 0x18(%rsp)
movsd 0x27c7f(%rip), %xmm1    # 0x356f8
mulsd %xmm0, %xmm1
addsd 0x27c7b(%rip), %xmm1    # 0x35700
mulsd %xmm0, %xmm1
addsd 0x27c77(%rip), %xmm1    # 0x35708
mulsd %xmm0, %xmm1
addsd 0x27c73(%rip), %xmm1    # 0x35710
mulsd %xmm0, %xmm1
addsd 0x27c6f(%rip), %xmm1    # 0x35718
mulsd %xmm0, %xmm1
addsd 0x27c6b(%rip), %xmm1    # 0x35720
mulsd %xmm0, %xmm1
addsd 0x27c67(%rip), %xmm1    # 0x35728
mulsd %xmm0, %xmm1
addsd 0x27c63(%rip), %xmm1    # 0x35730
mulsd %xmm0, %xmm1
addsd 0x27c5f(%rip), %xmm1    # 0x35738
mulsd %xmm0, %xmm1
addsd 0x27c5b(%rip), %xmm1    # 0x35740
mulsd %xmm0, %xmm1
addsd 0x26977(%rip), %xmm1    # 0x34468
movsd %xmm1, 0x10(%rsp)
movq %rbx, %rdi
callq 0x266d6
mulsd 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, %xmm0
addq $0x20, %rsp
popq %rbx
retq