// File: mouda[P]LTE_random_access-simulate/specialfunctions.cpp
// Function: alglib_impl::besseli1(double, alglib_impl::ae_state*)
double besseli1(double x, ae_state *_state)
{
    double y;
    double z;
    double v;
    double b0;
    double b1;
    double b2;
    double result;


    z = ae_fabs(x, _state);
    if( ae_fp_less_eq(z,8.0) )
    {
        y = z/2.0-2.0;
        bessel_besselm1firstcheb(2.77791411276104639959E-18, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -2.11142121435816608115E-17, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 1.55363195773620046921E-16, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.10559694773538630805E-15, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 7.60068429473540693410E-15, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -5.04218550472791168711E-14, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 3.22379336594557470981E-13, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.98397439776494371520E-12, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 1.17361862988909016308E-11, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -6.66348972350202774223E-11, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 3.62559028155211703701E-10, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.88724975172282928790E-9, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 9.38153738649577178388E-9, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -4.44505912879632808065E-8, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 2.00329475355213526229E-7, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -8.56872026469545474066E-7, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 3.47025130813767847674E-6, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.32731636560394358279E-5, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 4.78156510755005422638E-5, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.61760815825896745588E-4, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 5.12285956168575772895E-4, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.51357245063125314899E-3, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 4.15642294431288815669E-3, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.05640848946261981558E-2, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 2.47264490306265168283E-2, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -5.29459812080949914269E-2, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 1.02643658689847095384E-1, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.76416518357834055153E-1, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 2.52587186443633654823E-1, &b0, &b1, &b2, _state);
        v = 0.5*(b0-b2);
        z = v*z*ae_exp(z, _state);
    }
    else
    {
        y = 32.0/z-2.0;
        bessel_besselm1firstcheb(7.51729631084210481353E-18, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 4.41434832307170791151E-18, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -4.65030536848935832153E-17, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -3.20952592199342395980E-17, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 2.96262899764595013876E-16, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 3.30820231092092828324E-16, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.88035477551078244854E-15, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -3.81440307243700780478E-15, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 1.04202769841288027642E-14, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 4.27244001671195135429E-14, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -2.10154184277266431302E-14, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -4.08355111109219731823E-13, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -7.19855177624590851209E-13, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 2.03562854414708950722E-12, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 1.41258074366137813316E-11, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 3.25260358301548823856E-11, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.89749581235054123450E-11, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -5.58974346219658380687E-10, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -3.83538038596423702205E-9, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -2.63146884688951950684E-8, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -2.51223623787020892529E-7, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -3.88256480887769039346E-6, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -1.10588938762623716291E-4, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, -9.76109749136146840777E-3, &b0, &b1, &b2, _state);
        bessel_besselm1nextcheb(y, 7.78576235018280120474E-1, &b0, &b1, &b2, _state);
        v = 0.5*(b0-b2);
        z = v*ae_exp(z, _state)/ae_sqrt(z, _state);
    }
    if( ae_fp_less(x,0) )
    {
        z = -z;
    }
    result = z;
    return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movsd %xmm0, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movsd -0x8(%rbp), %xmm0
movq -0x10(%rbp), %rdi
callq 0x3c820
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x4922f(%rip), %xmm1    # 0x55620
callq 0x3c480
testb $0x1, %al
jne 0xc3ff
jmp 0xc844
movsd -0x20(%rbp), %xmm0
movsd 0x48fbc(%rip), %xmm1    # 0x553c8
divsd %xmm1, %xmm0
movsd 0x48fb0(%rip), %xmm1    # 0x553c8
subsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movsd 0x49da3(%rip), %xmm0    # 0x561d0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c8f0
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49d79(%rip), %xmm1    # 0x561c8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49d4f(%rip), %xmm1    # 0x561c0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49d25(%rip), %xmm1    # 0x561b8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49cfb(%rip), %xmm1    # 0x561b0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49cd1(%rip), %xmm1    # 0x561a8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49ca7(%rip), %xmm1    # 0x561a0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49c7d(%rip), %xmm1    # 0x56198
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49c53(%rip), %xmm1    # 0x56190
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49c29(%rip), %xmm1    # 0x56188
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49bff(%rip), %xmm1    # 0x56180
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49bd5(%rip), %xmm1    # 0x56178
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49bab(%rip), %xmm1    # 0x56170
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49b81(%rip), %xmm1    # 0x56168
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49b57(%rip), %xmm1    # 0x56160
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49b2d(%rip), %xmm1    # 0x56158
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49b03(%rip), %xmm1    # 0x56150
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49ad9(%rip), %xmm1    # 0x56148
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49aaf(%rip), %xmm1    # 0x56140
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49a85(%rip), %xmm1    # 0x56138
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49a5b(%rip), %xmm1    # 0x56130
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49a31(%rip), %xmm1    # 0x56128
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49a07(%rip), %xmm1    # 0x56120
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x499dd(%rip), %xmm1    # 0x56118
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x499b3(%rip), %xmm1    # 0x56110
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49989(%rip), %xmm1    # 0x56108
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x4995f(%rip), %xmm1    # 0x56100
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49935(%rip), %xmm1    # 0x560f8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x4990b(%rip), %xmm1    # 0x560f0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x30(%rbp), %xmm1
subsd -0x40(%rbp), %xmm1
movsd 0x48c48(%rip), %xmm0    # 0x55450
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
mulsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rdi
callq 0x3cdd0
movaps %xmm0, %xmm1
movsd -0x50(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
jmp 0xcc12
movsd 0x496e4(%rip), %xmm0    # 0x55f30
divsd -0x20(%rbp), %xmm0
movsd 0x48b6f(%rip), %xmm1    # 0x553c8
subsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movsd 0x4987a(%rip), %xmm0    # 0x560e8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c8f0
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49850(%rip), %xmm1    # 0x560e0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49826(%rip), %xmm1    # 0x560d8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x497fc(%rip), %xmm1    # 0x560d0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x497d2(%rip), %xmm1    # 0x560c8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x497a8(%rip), %xmm1    # 0x560c0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x4977e(%rip), %xmm1    # 0x560b8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49754(%rip), %xmm1    # 0x560b0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x4972a(%rip), %xmm1    # 0x560a8
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49700(%rip), %xmm1    # 0x560a0
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x496d6(%rip), %xmm1    # 0x56098
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x496ac(%rip), %xmm1    # 0x56090
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49682(%rip), %xmm1    # 0x56088
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49658(%rip), %xmm1    # 0x56080
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x4962e(%rip), %xmm1    # 0x56078
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49604(%rip), %xmm1    # 0x56070
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x495da(%rip), %xmm1    # 0x56068
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x495b0(%rip), %xmm1    # 0x56060
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49586(%rip), %xmm1    # 0x56058
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x4955c(%rip), %xmm1    # 0x56050
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49532(%rip), %xmm1    # 0x56048
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x49508(%rip), %xmm1    # 0x56040
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x494de(%rip), %xmm1    # 0x56038
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x494b4(%rip), %xmm1    # 0x56030
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rcx
movsd 0x4948a(%rip), %xmm1    # 0x56028
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x1c930
movsd -0x30(%rbp), %xmm1
subsd -0x40(%rbp), %xmm1
movsd 0x4888f(%rip), %xmm0    # 0x55450
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rdi
callq 0x3cdd0
movaps %xmm0, %xmm1
movsd -0x60(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rdi
callq 0x3c890
movaps %xmm0, %xmm1
movsd -0x58(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x8(%rbp), %xmm0
xorps %xmm1, %xmm1
callq 0x3c440
testb $0x1, %al
jne 0xcc25
jmp 0xcc46
movsd -0x20(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x48(%rbp), %xmm0
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)