// File: /workspace/github_cpp_makefile_star2_O2/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 0x23791(%rip), %xmm1    # 0x307f0
movsd %xmm0, 0x8(%rsp)
callq 0x24259
testb %al, %al
je 0xd091
movsd 0x8(%rsp), %xmm0
movq %rbx, %rdi
callq 0x2455f
mulsd 0x23424(%rip), %xmm0    # 0x304a8
addsd 0x2445c(%rip), %xmm0    # 0x314e8
jmp 0xd1bf
movsd 0x243ff(%rip), %xmm1    # 0x31498
movsd 0x8(%rsp), %xmm0
mulsd %xmm0, %xmm1
addsd 0x243f5(%rip), %xmm1    # 0x314a0
mulsd %xmm0, %xmm1
addsd 0x243f1(%rip), %xmm1    # 0x314a8
mulsd %xmm0, %xmm1
addsd 0x243ed(%rip), %xmm1    # 0x314b0
mulsd %xmm0, %xmm1
addsd 0x243e9(%rip), %xmm1    # 0x314b8
mulsd %xmm0, %xmm1
addsd 0x243e5(%rip), %xmm1    # 0x314c0
mulsd %xmm0, %xmm1
addsd 0x243e1(%rip), %xmm1    # 0x314c8
mulsd %xmm0, %xmm1
addsd 0x243dd(%rip), %xmm1    # 0x314d0
mulsd %xmm0, %xmm1
addsd 0x243d9(%rip), %xmm1    # 0x314d8
mulsd %xmm0, %xmm1
addsd 0x243d5(%rip), %xmm1    # 0x314e0
mulsd %xmm0, %xmm1
addsd 0x243d1(%rip), %xmm1    # 0x314e8
movsd %xmm1, 0x18(%rsp)
movsd 0x243cb(%rip), %xmm1    # 0x314f0
mulsd %xmm0, %xmm1
addsd 0x243c7(%rip), %xmm1    # 0x314f8
mulsd %xmm0, %xmm1
addsd 0x243c3(%rip), %xmm1    # 0x31500
mulsd %xmm0, %xmm1
addsd 0x243bf(%rip), %xmm1    # 0x31508
mulsd %xmm0, %xmm1
addsd 0x243bb(%rip), %xmm1    # 0x31510
mulsd %xmm0, %xmm1
addsd 0x243b7(%rip), %xmm1    # 0x31518
mulsd %xmm0, %xmm1
addsd 0x243b3(%rip), %xmm1    # 0x31520
mulsd %xmm0, %xmm1
addsd 0x243af(%rip), %xmm1    # 0x31528
mulsd %xmm0, %xmm1
addsd 0x243ab(%rip), %xmm1    # 0x31530
mulsd %xmm0, %xmm1
addsd 0x243a7(%rip), %xmm1    # 0x31538
mulsd %xmm0, %xmm1
addsd 0x232eb(%rip), %xmm1    # 0x30488
movsd %xmm1, 0x10(%rsp)
movq %rbx, %rdi
callq 0x2455f
mulsd 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, %xmm0
addq $0x20, %rsp
popq %rbx
retq