// File: /workspace/github_cpp_makefile_star2_O3/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 0x25ef9(%rip), %xmm1    # 0x337f0
movsd %xmm0, 0x8(%rsp)
callq 0x25bd9
testb %al, %al
je 0xd929
movsd 0x8(%rsp), %xmm0
movq %rbx, %rdi
callq 0x25f91
mulsd 0x25b8c(%rip), %xmm0    # 0x334a8
addsd 0x26bc4(%rip), %xmm0    # 0x344e8
jmp 0xda57
movsd 0x26b67(%rip), %xmm1    # 0x34498
movsd 0x8(%rsp), %xmm0
mulsd %xmm0, %xmm1
addsd 0x26b5d(%rip), %xmm1    # 0x344a0
mulsd %xmm0, %xmm1
addsd 0x26b59(%rip), %xmm1    # 0x344a8
mulsd %xmm0, %xmm1
addsd 0x26b55(%rip), %xmm1    # 0x344b0
mulsd %xmm0, %xmm1
addsd 0x26b51(%rip), %xmm1    # 0x344b8
mulsd %xmm0, %xmm1
addsd 0x26b4d(%rip), %xmm1    # 0x344c0
mulsd %xmm0, %xmm1
addsd 0x26b49(%rip), %xmm1    # 0x344c8
mulsd %xmm0, %xmm1
addsd 0x26b45(%rip), %xmm1    # 0x344d0
mulsd %xmm0, %xmm1
addsd 0x26b41(%rip), %xmm1    # 0x344d8
mulsd %xmm0, %xmm1
addsd 0x26b3d(%rip), %xmm1    # 0x344e0
mulsd %xmm0, %xmm1
addsd 0x26b39(%rip), %xmm1    # 0x344e8
movsd %xmm1, 0x18(%rsp)
movsd 0x26b33(%rip), %xmm1    # 0x344f0
mulsd %xmm0, %xmm1
addsd 0x26b2f(%rip), %xmm1    # 0x344f8
mulsd %xmm0, %xmm1
addsd 0x26b2b(%rip), %xmm1    # 0x34500
mulsd %xmm0, %xmm1
addsd 0x26b27(%rip), %xmm1    # 0x34508
mulsd %xmm0, %xmm1
addsd 0x26b23(%rip), %xmm1    # 0x34510
mulsd %xmm0, %xmm1
addsd 0x26b1f(%rip), %xmm1    # 0x34518
mulsd %xmm0, %xmm1
addsd 0x26b1b(%rip), %xmm1    # 0x34520
mulsd %xmm0, %xmm1
addsd 0x26b17(%rip), %xmm1    # 0x34528
mulsd %xmm0, %xmm1
addsd 0x26b13(%rip), %xmm1    # 0x34530
mulsd %xmm0, %xmm1
addsd 0x26b0f(%rip), %xmm1    # 0x34538
mulsd %xmm0, %xmm1
addsd 0x25a53(%rip), %xmm1    # 0x33488
movsd %xmm1, 0x10(%rsp)
movq %rbx, %rdi
callq 0x25f91
mulsd 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, %xmm0
addq $0x20, %rsp
popq %rbx
retq