// File: mouda[P]LTE_random_access-simulate/alglibinternal.cpp
// Function: alglib_impl::hsschur_aux2x2schur(double*, double*, double*, double*, double*, double*, double*, double*, double*, double*, alglib_impl::ae_state*)
static void hsschur_aux2x2schur(double* a,
     double* b,
     double* c,
     double* d,
     double* rt1r,
     double* rt1i,
     double* rt2r,
     double* rt2i,
     double* cs,
     double* sn,
     ae_state *_state)
{
    double multpl;
    double aa;
    double bb;
    double bcmax;
    double bcmis;
    double cc;
    double cs1;
    double dd;
    double eps;
    double p;
    double sab;
    double sac;
    double scl;
    double sigma;
    double sn1;
    double tau;
    double temp;
    double z;

    *rt1r = 0;
    *rt1i = 0;
    *rt2r = 0;
    *rt2i = 0;
    *cs = 0;
    *sn = 0;

    multpl = 4.0;
    eps = ae_machineepsilon;
    if( ae_fp_eq(*c,0) )
    {
        *cs = 1;
        *sn = 0;
    }
    else
    {
        if( ae_fp_eq(*b,0) )
        {
            
            /*
             * Swap rows and columns
             */
            *cs = 0;
            *sn = 1;
            temp = *d;
            *d = *a;
            *a = temp;
            *b = -*c;
            *c = 0;
        }
        else
        {
            if( ae_fp_eq(*a-(*d),0)&&hsschur_extschursigntoone(*b, _state)!=hsschur_extschursigntoone(*c, _state) )
            {
                *cs = 1;
                *sn = 0;
            }
            else
            {
                temp = *a-(*d);
                p = 0.5*temp;
                bcmax = ae_maxreal(ae_fabs(*b, _state), ae_fabs(*c, _state), _state);
                bcmis = ae_minreal(ae_fabs(*b, _state), ae_fabs(*c, _state), _state)*hsschur_extschursigntoone(*b, _state)*hsschur_extschursigntoone(*c, _state);
                scl = ae_maxreal(ae_fabs(p, _state), bcmax, _state);
                z = p/scl*p+bcmax/scl*bcmis;
                
                /*
                 * If Z is of the order of the machine accuracy, postpone the
                 * decision on the nature of eigenvalues
                 */
                if( ae_fp_greater_eq(z,multpl*eps) )
                {
                    
                    /*
                     * Real eigenvalues. Compute A and D.
                     */
                    z = p+hsschur_extschursign(ae_sqrt(scl, _state)*ae_sqrt(z, _state), p, _state);
                    *a = *d+z;
                    *d = *d-bcmax/z*bcmis;
                    
                    /*
                     * Compute B and the rotation matrix
                     */
                    tau = pythag2(*c, z, _state);
                    *cs = z/tau;
                    *sn = *c/tau;
                    *b = *b-(*c);
                    *c = 0;
                }
                else
                {
                    
                    /*
                     * Complex eigenvalues, or real (almost) equal eigenvalues.
                     * Make diagonal elements equal.
                     */
                    sigma = *b+(*c);
                    tau = pythag2(sigma, temp, _state);
                    *cs = ae_sqrt(0.5*(1+ae_fabs(sigma, _state)/tau), _state);
                    *sn = -p/(tau*(*cs))*hsschur_extschursign(1, sigma, _state);
                    
                    /*
                     * Compute [ AA  BB ] = [ A  B ] [ CS -SN ]
                     *         [ CC  DD ]   [ C  D ] [ SN  CS ]
                     */
                    aa = *a*(*cs)+*b*(*sn);
                    bb = -*a*(*sn)+*b*(*cs);
                    cc = *c*(*cs)+*d*(*sn);
                    dd = -*c*(*sn)+*d*(*cs);
                    
                    /*
                     * Compute [ A  B ] = [ CS  SN ] [ AA  BB ]
                     *         [ C  D ]   [-SN  CS ] [ CC  DD ]
                     */
                    *a = aa*(*cs)+cc*(*sn);
                    *b = bb*(*cs)+dd*(*sn);
                    *c = -aa*(*sn)+cc*(*cs);
                    *d = -bb*(*sn)+dd*(*cs);
                    temp = 0.5*(*a+(*d));
                    *a = temp;
                    *d = temp;
                    if( ae_fp_neq(*c,0) )
                    {
                        if( ae_fp_neq(*b,0) )
                        {
                            if( hsschur_extschursigntoone(*b, _state)==hsschur_extschursigntoone(*c, _state) )
                            {
                                
                                /*
                                 * Real eigenvalues: reduce to upper triangular form
                                 */
                                sab = ae_sqrt(ae_fabs(*b, _state), _state);
                                sac = ae_sqrt(ae_fabs(*c, _state), _state);
                                p = hsschur_extschursign(sab*sac, *c, _state);
                                tau = 1/ae_sqrt(ae_fabs(*b+(*c), _state), _state);
                                *a = temp+p;
                                *d = temp-p;
                                *b = *b-(*c);
                                *c = 0;
                                cs1 = sab*tau;
                                sn1 = sac*tau;
                                temp = *cs*cs1-*sn*sn1;
                                *sn = *cs*sn1+*sn*cs1;
                                *cs = temp;
                            }
                        }
                        else
                        {
                            *b = -*c;
                            *c = 0;
                            temp = *cs;
                            *cs = -*sn;
                            *sn = temp;
                        }
                    }
                }
            }
        }
    }
    
    /*
     * Store eigenvalues in (RT1R,RT1I) and (RT2R,RT2I).
     */
    *rt1r = *a;
    *rt2r = *d;
    if( ae_fp_eq(*c,0) )
    {
        *rt1i = 0;
        *rt2i = 0;
    }
    else
    {
        *rt1i = ae_sqrt(ae_fabs(*b, _state), _state)*ae_sqrt(ae_fabs(*c, _state), _state);
        *rt2i = -*rt1i;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq 0x30(%rbp), %rax
movq 0x28(%rbp), %rax
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x28(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x10(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x20(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x28(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movsd 0x1bab7(%rip), %xmm0    # 0x551b8
movsd %xmm0, -0x38(%rbp)
movsd 0x1c20a(%rip), %xmm0    # 0x55918
movsd %xmm0, -0x78(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
callq 0x3c3d0
testb $0x1, %al
jne 0x39729
jmp 0x39749
movq 0x20(%rbp), %rax
movsd 0x1b8d3(%rip), %xmm0    # 0x55008
movsd %xmm0, (%rax)
movq 0x28(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
jmp 0x3a086
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
callq 0x3c3d0
testb $0x1, %al
jne 0x39762
jmp 0x397e4
movq 0x20(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x28(%rbp), %rax
movsd 0x1b88f(%rip), %xmm0    # 0x55008
movsd %xmm0, (%rax)
movq -0x20(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0xb8(%rbp)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0xb8(%rbp), %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
jmp 0x3a084
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movq -0x20(%rbp), %rax
subsd (%rax), %xmm0
xorps %xmm1, %xmm1
callq 0x3c3d0
testb $0x1, %al
jne 0x39802
jmp 0x3985a
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3a160
movq %rax, -0xc8(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3a160
movq %rax, %rcx
movq -0xc8(%rbp), %rax
cmpq %rcx, %rax
je 0x3985a
movq 0x20(%rbp), %rax
movsd 0x1b7c2(%rip), %xmm0    # 0x55008
movsd %xmm0, (%rax)
movq 0x28(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
jmp 0x3a082
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movq -0x20(%rbp), %rax
subsd (%rax), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x1bbd6(%rip), %xmm0    # 0x55450
mulsd -0xb8(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movsd %xmm0, -0xe8(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movaps %xmm0, %xmm1
movsd -0xe8(%rbp), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3ca70
movsd %xmm0, -0x50(%rbp)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movsd %xmm0, -0xe0(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movaps %xmm0, %xmm1
movsd -0xe0(%rbp), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3cab0
movsd %xmm0, -0xd8(%rbp)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3a160
movsd -0xd8(%rbp), %xmm0
cvtsi2sd %rax, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3a160
movsd -0xd0(%rbp), %xmm0
cvtsi2sd %rax, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x80(%rbp), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movsd -0x50(%rbp), %xmm1
movq 0x30(%rbp), %rdi
callq 0x3ca70
movsd %xmm0, -0x98(%rbp)
movsd -0x80(%rbp), %xmm0
divsd -0x98(%rbp), %xmm0
movsd -0x80(%rbp), %xmm2
movsd -0x50(%rbp), %xmm1
divsd -0x98(%rbp), %xmm1
mulsd -0x58(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
mulsd -0x78(%rbp), %xmm1
callq 0x3c500
testb $0x1, %al
jne 0x399d9
jmp 0x39b16
movsd -0x80(%rbp), %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd -0x98(%rbp), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c890
movsd %xmm0, -0xf8(%rbp)
movsd -0xc0(%rbp), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c890
movaps %xmm0, %xmm1
movsd -0xf8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd -0x80(%rbp), %xmm1
movq 0x30(%rbp), %rdi
callq 0x39600
movaps %xmm0, %xmm1
movsd -0xf0(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movq -0x20(%rbp), %rax
movsd (%rax), %xmm0
addsd -0xc0(%rbp), %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x20(%rbp), %rax
movsd (%rax), %xmm1
movsd -0x50(%rbp), %xmm0
divsd -0xc0(%rbp), %xmm0
movsd -0x58(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movsd -0xc0(%rbp), %xmm1
movq 0x30(%rbp), %rdi
callq 0x23d00
movsd %xmm0, -0xb0(%rbp)
movsd -0xc0(%rbp), %xmm0
divsd -0xb0(%rbp), %xmm0
movq 0x20(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
divsd -0xb0(%rbp), %xmm0
movq 0x28(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq -0x18(%rbp), %rax
subsd (%rax), %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
jmp 0x3a080
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq -0x18(%rbp), %rax
addsd (%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0xa0(%rbp), %xmm0
movsd -0xb8(%rbp), %xmm1
movq 0x30(%rbp), %rdi
callq 0x23d00
movsd %xmm0, -0xb0(%rbp)
movsd -0xa0(%rbp), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
divsd -0xb0(%rbp), %xmm0
movsd 0x1b498(%rip), %xmm1    # 0x55008
addsd %xmm0, %xmm1
movsd 0x1b8d4(%rip), %xmm0    # 0x55450
mulsd %xmm1, %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c890
movq 0x20(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x80(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd -0xb0(%rbp), %xmm1
movq 0x20(%rbp), %rax
mulsd (%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x100(%rbp)
movsd -0xa0(%rbp), %xmm1
movq 0x30(%rbp), %rdi
movsd 0x1b42b(%rip), %xmm0    # 0x55008
callq 0x39600
movaps %xmm0, %xmm1
movsd -0x100(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq 0x28(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movq 0x20(%rbp), %rax
movsd (%rax), %xmm2
movq -0x10(%rbp), %rax
movsd (%rax), %xmm1
movq 0x28(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x28(%rbp), %rax
movsd (%rax), %xmm2
movq -0x10(%rbp), %rax
movsd (%rax), %xmm1
movq 0x20(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x20(%rbp), %rax
movsd (%rax), %xmm2
movq -0x20(%rbp), %rax
movsd (%rax), %xmm1
movq 0x28(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x28(%rbp), %rax
movsd (%rax), %xmm2
movq -0x20(%rbp), %rax
movsd (%rax), %xmm1
movq 0x20(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x40(%rbp), %xmm0
movq 0x20(%rbp), %rax
movsd (%rax), %xmm2
movsd -0x60(%rbp), %xmm1
movq 0x28(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x48(%rbp), %xmm0
movq 0x20(%rbp), %rax
movsd (%rax), %xmm2
movsd -0x70(%rbp), %xmm1
movq 0x28(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x40(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x28(%rbp), %rax
movsd (%rax), %xmm2
movsd -0x60(%rbp), %xmm1
movq 0x20(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0x48(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x28(%rbp), %rax
movsd (%rax), %xmm2
movsd -0x70(%rbp), %xmm1
movq 0x20(%rbp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x8(%rbp), %rax
movsd (%rax), %xmm1
movq -0x20(%rbp), %rax
addsd (%rax), %xmm1
movsd 0x1b687(%rip), %xmm0    # 0x55450
mulsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd -0xb8(%rbp), %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0xb8(%rbp), %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
callq 0x3c410
testb $0x1, %al
jne 0x39e0e
jmp 0x3a07e
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
callq 0x3c410
testb $0x1, %al
jne 0x39e27
jmp 0x3a003
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3a160
movq %rax, -0x108(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3a160
movq %rax, %rcx
movq -0x108(%rbp), %rax
cmpq %rcx, %rax
jne 0x3a001
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movq 0x30(%rbp), %rdi
callq 0x3c890
movsd %xmm0, -0x88(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movq 0x30(%rbp), %rdi
callq 0x3c890
movsd %xmm0, -0x90(%rbp)
movsd -0x88(%rbp), %xmm0
mulsd -0x90(%rbp), %xmm0
movq -0x18(%rbp), %rax
movsd (%rax), %xmm1
movq 0x30(%rbp), %rdi
callq 0x39600
movsd %xmm0, -0x80(%rbp)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq -0x18(%rbp), %rax
addsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movq 0x30(%rbp), %rdi
callq 0x3c890
movaps %xmm0, %xmm1
movsd 0x1b10e(%rip), %xmm0    # 0x55008
divsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0xb8(%rbp), %xmm0
addsd -0x80(%rbp), %xmm0
movq -0x8(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0xb8(%rbp), %xmm0
subsd -0x80(%rbp), %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq -0x18(%rbp), %rax
subsd (%rax), %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movsd -0x88(%rbp), %xmm0
mulsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x90(%rbp), %xmm0
mulsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movq 0x20(%rbp), %rax
movsd (%rax), %xmm0
movsd -0x68(%rbp), %xmm2
movq 0x28(%rbp), %rax
movsd (%rax), %xmm1
mulsd -0xa8(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
movq 0x20(%rbp), %rax
movsd (%rax), %xmm0
movsd -0xa8(%rbp), %xmm2
movq 0x28(%rbp), %rax
movsd (%rax), %xmm1
mulsd -0x68(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0xb8(%rbp), %xmm0
movq 0x20(%rbp), %rax
movsd %xmm0, (%rax)
jmp 0x3a07c
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x20(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0xb8(%rbp)
movq 0x28(%rbp), %rax
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x20(%rbp), %rax
movsd %xmm0, (%rax)
movsd -0xb8(%rbp), %xmm0
movq 0x28(%rbp), %rax
movsd %xmm0, (%rax)
jmp 0x3a07e
jmp 0x3a080
jmp 0x3a082
jmp 0x3a084
jmp 0x3a086
movq -0x8(%rbp), %rax
movsd (%rax), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x20(%rbp), %rax
movsd (%rax), %xmm0
movq 0x10(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
callq 0x3c3d0
testb $0x1, %al
jne 0x3a0bc
jmp 0x3a0d4
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
jmp 0x3a14e
movq -0x10(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movq 0x30(%rbp), %rdi
callq 0x3c890
movsd %xmm0, -0x110(%rbp)
movq -0x18(%rbp), %rax
movsd (%rax), %xmm0
movq 0x30(%rbp), %rdi
callq 0x3c820
movq 0x30(%rbp), %rdi
callq 0x3c890
movaps %xmm0, %xmm1
movsd -0x110(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq -0x30(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x30(%rbp), %rax
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x18(%rbp), %rax
movsd %xmm0, (%rax)
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
nopw (%rax,%rax)