// File: /workspace/github_cpp_makefile_star2_O2/mouda[P]LTE_random_access-simulate/ap.cpp
// Function: alglib::vdotproduct(alglib::complex const*, long, char const*, alglib::complex const*, long, char const*, long)
alglib::complex alglib::vdotproduct(const alglib::complex *v0, ae_int_t stride0, const char *conj0, const alglib::complex *v1, ae_int_t stride1, const char *conj1, ae_int_t n)
{
    double rx = 0, ry = 0;
    ae_int_t i;
    bool bconj0 = !((conj0[0]=='N') || (conj0[0]=='n'));
    bool bconj1 = !((conj1[0]=='N') || (conj1[0]=='n'));
    if( bconj0 && bconj1 )
    {
        double v0x, v0y, v1x, v1y;
        for(i=0; i<n; i++, v0+=stride0, v1+=stride1)
        {
            v0x = v0->x;
            v0y = -v0->y;
            v1x = v1->x;
            v1y = -v1->y;
            rx += v0x*v1x-v0y*v1y;
            ry += v0x*v1y+v0y*v1x;
        }
    }
    if( !bconj0 && bconj1 )
    {
        double v0x, v0y, v1x, v1y;
        for(i=0; i<n; i++, v0+=stride0, v1+=stride1)
        {
            v0x = v0->x;
            v0y = v0->y;
            v1x = v1->x;
            v1y = -v1->y;
            rx += v0x*v1x-v0y*v1y;
            ry += v0x*v1y+v0y*v1x;
        }
    }
    if( bconj0 && !bconj1 )
    {
        double v0x, v0y, v1x, v1y;
        for(i=0; i<n; i++, v0+=stride0, v1+=stride1)
        {
            v0x = v0->x;
            v0y = -v0->y;
            v1x = v1->x;
            v1y = v1->y;
            rx += v0x*v1x-v0y*v1y;
            ry += v0x*v1y+v0y*v1x;
        }
    }
    if( !bconj0 && !bconj1 )
    {
        double v0x, v0y, v1x, v1y;
        for(i=0; i<n; i++, v0+=stride0, v1+=stride1)
        {
            v0x = v0->x;
            v0y = v0->y;
            v1x = v1->x;
            v1y = v1->y;
            rx += v0x*v1x-v0y*v1y;
            ry += v0x*v1y+v0y*v1x;
        }
    }
    return alglib::complex(rx,ry);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rax
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %r10
movb (%rcx), %cl
andb $-0x21, %cl
cmpb $0x4e, %cl
sete %r11b
movb (%r10), %r10b
andb $-0x21, %r10b
cmpb $0x4e, %r10b
sete %bl
movl %r11d, %ebp
orb %bl, %bpl
xorpd %xmm0, %xmm0
testb $0x1, %bpl
je 0x278ba
cmpb $0x4e, %cl
setne %bpl
orb %bl, %bpl
testb $0x1, %bpl
je 0x27923
cmpb $0x4e, %r10b
setne %bl
orb %bl, %r11b
je 0x2798f
xorb $0x4e, %r10b
xorb $0x4e, %cl
orb %r10b, %cl
je 0x279f4
movupd %xmm0, (%rax)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
xorl %r14d, %r14d
testq %rdi, %rdi
cmovgq %rdi, %r14
movq %r9, %r15
shlq $0x4, %r15
movq %rdx, %r12
shlq $0x4, %r12
movapd 0x88d6(%rip), %xmm1     # 0x301b0
subq $0x1, %r14
jb 0x27879
movupd (%r8), %xmm2
movapd %xmm2, %xmm3
unpckhpd %xmm2, %xmm3            # xmm3 = xmm3[1],xmm2[1]
xorpd %xmm1, %xmm3
movsd (%rsi), %xmm4
movsd 0x8(%rsi), %xmm5
unpcklpd %xmm5, %xmm5            # xmm5 = xmm5[0,0]
mulpd %xmm2, %xmm5
unpcklpd %xmm4, %xmm4            # xmm4 = xmm4[0,0]
unpcklpd %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0]
mulpd %xmm4, %xmm3
subpd %xmm5, %xmm3
shufpd $0x1, %xmm3, %xmm3      # xmm3 = xmm3[1,0]
addpd %xmm3, %xmm0
addq %r15, %r8
addq %r12, %rsi
jmp 0x278da
xorl %ebx, %ebx
testq %rdi, %rdi
cmovgq %rdi, %rbx
movq %r9, %r14
shlq $0x4, %r14
movq %rdx, %r15
shlq $0x4, %r15
movapd 0x886e(%rip), %xmm1     # 0x301b0
subq $0x1, %rbx
jb 0x2788d
movupd (%r8), %xmm2
movapd %xmm2, %xmm3
unpckhpd %xmm2, %xmm3            # xmm3 = xmm3[1],xmm2[1]
xorpd %xmm1, %xmm3
movsd (%rsi), %xmm4
movsd 0x8(%rsi), %xmm5
unpcklpd %xmm5, %xmm5            # xmm5 = xmm5[0,0]
mulpd %xmm2, %xmm5
unpcklpd %xmm4, %xmm4            # xmm4 = xmm4[0,0]
unpcklpd %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0]
mulpd %xmm4, %xmm3
addpd %xmm5, %xmm3
shufpd $0x1, %xmm3, %xmm3      # xmm3 = xmm3[1,0]
addpd %xmm3, %xmm0
addq %r14, %r8
addq %r15, %rsi
jmp 0x27942
xorl %r11d, %r11d
testq %rdi, %rdi
cmovgq %rdi, %r11
movq %r9, %rbx
shlq $0x4, %rbx
movq %rdx, %r14
shlq $0x4, %r14
movapd 0x8801(%rip), %xmm1     # 0x301b0
subq $0x1, %r11
jb 0x2789d
movsd (%rsi), %xmm2
movsd 0x8(%rsi), %xmm3
movapd %xmm3, %xmm4
xorpd %xmm1, %xmm4
movupd (%r8), %xmm5
unpcklpd %xmm4, %xmm3            # xmm3 = xmm3[0],xmm4[0]
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
mulpd %xmm5, %xmm2
shufpd $0x1, %xmm5, %xmm5      # xmm5 = xmm5[1,0]
mulpd %xmm3, %xmm5
addpd %xmm5, %xmm2
addpd %xmm2, %xmm0
addq %rbx, %r8
addq %r14, %rsi
jmp 0x279af
xorl %ecx, %ecx
testq %rdi, %rdi
cmovgq %rdi, %rcx
shlq $0x4, %r9
addq $0x8, %rsi
shlq $0x4, %rdx
movapd 0x879f(%rip), %xmm1     # 0x301b0
subq $0x1, %rcx
jb 0x278ad
movsd -0x8(%rsi), %xmm2
movsd (%rsi), %xmm3
movapd %xmm3, %xmm4
xorpd %xmm1, %xmm4
movupd (%r8), %xmm5
unpcklpd %xmm3, %xmm4            # xmm4 = xmm4[0],xmm3[0]
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
mulpd %xmm5, %xmm2
shufpd $0x1, %xmm5, %xmm5      # xmm5 = xmm5[1,0]
mulpd %xmm4, %xmm5
addpd %xmm5, %xmm2
addpd %xmm2, %xmm0
addq %r9, %r8
addq %rdx, %rsi
jmp 0x27a11