// File: /workspace/github_c_makefile_star2_O2/stetre[P]moonglmath/src/vec.c
// Function: Mul
static int Mul(lua_State *L)
    {
    vec_t v, v1; 
    size_t size, size1, i; 
    unsigned int isrow, isrow1;
    double r = 0;
    if(lua_isnumber(L, 1))
        return Vxs(L, 1, 2);
    if(lua_isnumber(L, 2))
        return Vxs(L, 2, 1);
    if(testmat(L, 2, NULL, NULL, NULL))
        return Vxm(L);
    checkvec(L, 1, v, &size, &isrow);
    checkvec(L, 2, v1, &size1, &isrow1);
    if((!isrow) && isrow1) /* Nx1 * 1xM = NxM */
        return Vxv(L, v, size, v1, size1);
    if(size != size1)
        return luaL_error(L, OPERANDS_ERROR);
    /* dot product:  1*N * Nx1, but also Nx1 * Nx1 and 1xN * 1*N are admitted */
    for(i=0; i < size; i++) 
        r += (v[i]*v1[i]);
    lua_pushnumber(L, r);
    return 1;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xe0, %rsp
movq %rdi, %rbx
pushq $0x1
popq %rsi
callq 0x85a0
testl %eax, %eax
je 0x14ba7
pushq $0x1
popq %rsi
pushq $0x2
jmp 0x14bbb
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x85a0
pushq $0x2
popq %rsi
testl %eax, %eax
je 0x14bd3
pushq $0x1
popq %rdx
movq %rbx, %rdi
addq $0xe0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x15058
movq %rbx, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x8a00
testl %eax, %eax
je 0x14c9c
pushq $0x1
popq %rsi
leaq 0x40(%rsp), %rdx
leaq 0x8(%rsp), %rcx
leaq 0x4(%rsp), %r15
movq %rbx, %rdi
movq %r15, %r8
callq 0x86d0
pushq $0x2
popq %rsi
leaq 0x60(%rsp), %r14
leaq 0x18(%rsp), %rcx
leaq 0x10(%rsp), %r8
movq %rbx, %rdi
movq %r14, %rdx
callq 0x8560
cmpl $0x0, (%r15)
je 0x14c7a
movq 0x8(%rsp), %rax
cmpq 0x18(%rsp), %rax
jne 0x14c7a
movq 0x10(%rsp), %rcx
xorl %edx, %edx
cmpq %rcx, %rdx
je 0x14d21
xorpd %xmm0, %xmm0
movq %r14, %rsi
xorl %edi, %edi
cmpq %rdi, %rax
je 0x14c6b
movsd 0x40(%rsp,%rdi,8), %xmm1
mulsd (%rsi), %xmm1
addsd %xmm1, %xmm0
incq %rdi
addq $0x20, %rsi
jmp 0x14c4f
movsd %xmm0, 0x20(%rsp,%rdx,8)
incq %rdx
addq $0x8, %r14
jmp 0x14c3d
leaq 0x197f(%rip), %rsi      # 0x16600
leaq 0x1e38(%rip), %rdx      # 0x16ac0
movq %rbx, %rdi
movl $0x1c0, %ecx            # imm = 0x1C0
xorl %eax, %eax
callq 0x8b00
jmp 0x14d6f
pushq $0x1
popq %rbp
leaq 0x40(%rsp), %rdx
leaq 0x18(%rsp), %r14
leaq 0x8(%rsp), %r15
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rcx
movq %r15, %r8
callq 0x86d0
pushq $0x2
popq %rsi
leaq 0x20(%rsp), %rdx
leaq 0x10(%rsp), %r12
leaq 0x4(%rsp), %r8
movq %rbx, %rdi
movq %r12, %rcx
callq 0x86d0
cmpl $0x0, (%r15)
movq (%r14), %rdx
movq (%r12), %rcx
jne 0x14d37
cmpl $0x0, 0x4(%rsp)
je 0x14d37
leaq 0x60(%rsp), %rax
xorl %esi, %esi
cmpq %rdx, %rsi
je 0x14d5c
xorl %edi, %edi
cmpq %rdi, %rcx
je 0x14d18
movsd 0x40(%rsp,%rsi,8), %xmm0
mulsd 0x20(%rsp,%rdi,8), %xmm0
movsd %xmm0, (%rax,%rdi,8)
incq %rdi
jmp 0x14cfd
incq %rsi
addq $0x20, %rax
jmp 0x14cf6
leaq 0x20(%rsp), %rsi
pushq $0x1
popq %r8
movq %rbx, %rdi
movq %rcx, %rdx
callq 0x8310
jmp 0x14d6f
cmpq %rcx, %rdx
jne 0x14d83
xorpd %xmm0, %xmm0
xorl %eax, %eax
cmpq %rax, %rdx
je 0x14d9e
movsd 0x40(%rsp,%rax,8), %xmm1
mulsd 0x20(%rsp,%rax,8), %xmm1
addsd %xmm1, %xmm0
incq %rax
jmp 0x14d42
leaq 0x60(%rsp), %rsi
movq %rbx, %rdi
movq %rdx, %r8
movq %rcx, %r9
callq 0x8500
movl %eax, %ebp
movl %ebp, %eax
addq $0xe0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1876(%rip), %rsi      # 0x16600
leaq 0x1d2f(%rip), %rdx      # 0x16ac0
movq %rbx, %rdi
movl $0x1dc, %ecx            # imm = 0x1DC
jmp 0x14c90
movq %rbx, %rdi
callq 0x8840
jmp 0x14d71