// File: /workspace/github_c_makefile_star2_O2/stetre[P]moonglmath/src/mat.c
// Function: moonglmath_mat_adj
void mat_adj(mat_t dst, mat_t m, size_t n)
    {
    if(n==2)
        {
        dst[0][0] = m[1][1];
        dst[0][1] = -m[0][1];
        dst[1][0] = -m[1][0];
        dst[1][1] = m[0][0];
        }
    else if(n==3)
        {
        dst[0][0] = det2_(m[1][1], m[1][2], m[2][1], m[2][2]);
        dst[0][1] = det2_(m[0][2], m[0][1], m[2][2], m[2][1]);
        dst[0][2] = det2_(m[0][1], m[0][2], m[1][1], m[1][2]);
        dst[1][0] = det2_(m[1][2], m[1][0], m[2][2], m[2][0]);
        dst[1][1] = det2_(m[0][0], m[0][2], m[2][0], m[2][2]);
        dst[1][2] = det2_(m[0][2], m[0][0], m[1][2], m[1][0]);
        dst[2][0] = det2_(m[1][0], m[1][1], m[2][0], m[2][1]);
        dst[2][1] = det2_(m[0][1], m[0][0], m[2][1], m[2][0]);
        dst[2][2] = det2_(m[0][0], m[0][1], m[1][0], m[1][1]);
        }
    else //if(nr==4)
        {
        dst[0][0]=det3_(m[1][1],m[1][2],m[1][3],m[2][1],m[2][2],m[2][3],m[3][1],m[3][2],m[3][3]);
        dst[0][1]=-det3_(m[0][1],m[0][2],m[0][3],m[2][1],m[2][2],m[2][3],m[3][1],m[3][2],m[3][3]);
        dst[0][2]=det3_(m[0][1],m[0][2],m[0][3],m[1][1],m[1][2],m[1][3],m[3][1],m[3][2],m[3][3]);
        dst[0][3]=-det3_(m[0][1],m[0][2],m[0][3],m[1][1],m[1][2],m[1][3],m[2][1],m[2][2],m[2][3]);
        dst[1][0]=-det3_(m[1][0],m[1][2],m[1][3],m[2][0],m[2][2],m[2][3],m[3][0],m[3][2],m[3][3]);
        dst[1][1]=det3_(m[0][0],m[0][2],m[0][3],m[2][0],m[2][2],m[2][3],m[3][0],m[3][2],m[3][3]);
        dst[1][2]=-det3_(m[0][0],m[0][2],m[0][3],m[1][0],m[1][2],m[1][3],m[3][0],m[3][2],m[3][3]);
        dst[1][3]=det3_(m[0][0],m[0][2],m[0][3],m[1][0],m[1][2],m[1][3],m[2][0],m[2][2],m[2][3]);
        dst[2][0]=det3_(m[1][0],m[1][1],m[1][3],m[2][0],m[2][1],m[2][3],m[3][0],m[3][1],m[3][3]);
        dst[2][1]=-det3_(m[0][0],m[0][1],m[0][3],m[2][0],m[2][1],m[2][3],m[3][0],m[3][1],m[3][3]);
        dst[2][2]=det3_(m[0][0],m[0][1],m[0][3],m[1][0],m[1][1],m[1][3],m[3][0],m[3][1],m[3][3]);
        dst[2][3]=-det3_(m[0][0],m[0][1],m[0][3],m[1][0],m[1][1],m[1][3],m[2][0],m[2][1],m[2][3]);
        dst[3][0]=-det3_(m[1][0],m[1][1],m[1][2],m[2][0],m[2][1],m[2][2],m[3][0],m[3][1],m[3][2]);
        dst[3][1]=det3_(m[0][0],m[0][1],m[0][2],m[2][0],m[2][1],m[2][2],m[3][0],m[3][1],m[3][2]);
        dst[3][2]=-det3_(m[0][0],m[0][1],m[0][2],m[1][0],m[1][1],m[1][2],m[3][0],m[3][1],m[3][2]);
        dst[3][3]=det3_(m[0][0],m[0][1],m[0][2],m[1][0],m[1][1],m[1][2],m[2][0],m[2][1],m[2][2]);
        }
    }

// Assembly:
movsd 0x28(%rsi), %xmm0
cmpq $0x3, %rdx
je 0xded8
cmpq $0x2, %rdx
jne 0xdfd5
movsd %xmm0, (%rdi)
movsd 0x8(%rsi), %xmm0
movapd 0x821a(%rip), %xmm1     # 0x160d0
xorpd %xmm1, %xmm0
movlpd %xmm0, 0x8(%rdi)
movsd 0x20(%rsi), %xmm0
xorpd %xmm1, %xmm0
movlpd %xmm0, 0x20(%rdi)
movsd (%rsi), %xmm0
pushq $0x28
jmp 0xe64f
movsd 0x30(%rsi), %xmm1
mulsd 0x48(%rsi), %xmm1
mulsd 0x50(%rsi), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rdi)
movsd 0x8(%rsi), %xmm0
movsd 0x10(%rsi), %xmm1
mulsd 0x50(%rsi), %xmm0
mulsd 0x48(%rsi), %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rdi)
movsd 0x8(%rsi), %xmm0
movsd 0x10(%rsi), %xmm1
mulsd 0x28(%rsi), %xmm1
mulsd 0x30(%rsi), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rdi)
movsd 0x20(%rsi), %xmm0
movsd 0x30(%rsi), %xmm1
mulsd 0x50(%rsi), %xmm0
mulsd 0x40(%rsi), %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rdi)
movsd (%rsi), %xmm0
movsd 0x10(%rsi), %xmm1
mulsd 0x40(%rsi), %xmm1
mulsd 0x50(%rsi), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x28(%rdi)
movsd (%rsi), %xmm0
movsd 0x10(%rsi), %xmm1
mulsd 0x30(%rsi), %xmm0
mulsd 0x20(%rsi), %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, 0x30(%rdi)
movsd 0x20(%rsi), %xmm0
movsd 0x28(%rsi), %xmm1
mulsd 0x40(%rsi), %xmm1
mulsd 0x48(%rsi), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rdi)
movsd (%rsi), %xmm0
movsd 0x8(%rsi), %xmm1
mulsd 0x48(%rsi), %xmm0
mulsd 0x40(%rsi), %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, 0x48(%rdi)
movsd (%rsi), %xmm0
movsd 0x8(%rsi), %xmm1
mulsd 0x20(%rsi), %xmm1
mulsd 0x28(%rsi), %xmm0
subsd %xmm1, %xmm0
pushq $0x50
jmp 0xe64f
movsd 0x48(%rsi), %xmm1
movsd 0x50(%rsi), %xmm2
movsd 0x78(%rsi), %xmm3
movsd 0x70(%rsi), %xmm4
movsd 0x58(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x68(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x30(%rsi), %xmm3
mulsd %xmm7, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x38(%rsi), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rdi)
movsd 0x48(%rsi), %xmm1
movsd 0x50(%rsi), %xmm0
movsd 0x78(%rsi), %xmm2
movsd 0x70(%rsi), %xmm3
movsd 0x58(%rsi), %xmm4
movapd %xmm4, %xmm5
mulsd %xmm3, %xmm5
movapd %xmm0, %xmm6
mulsd %xmm2, %xmm6
subsd %xmm5, %xmm6
movsd 0x68(%rsi), %xmm5
mulsd %xmm5, %xmm4
mulsd %xmm1, %xmm2
subsd %xmm4, %xmm2
mulsd 0x10(%rsi), %xmm2
mulsd 0x8(%rsi), %xmm6
subsd %xmm2, %xmm6
mulsd %xmm5, %xmm0
mulsd %xmm3, %xmm1
subsd %xmm0, %xmm1
mulsd 0x18(%rsi), %xmm1
addsd %xmm6, %xmm1
movapd 0x802e(%rip), %xmm0     # 0x160d0
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x8(%rdi)
movsd 0x28(%rsi), %xmm1
movsd 0x30(%rsi), %xmm2
movsd 0x78(%rsi), %xmm3
movsd 0x70(%rsi), %xmm4
movsd 0x38(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x68(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x10(%rsi), %xmm3
mulsd 0x8(%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x18(%rsi), %xmm1
addsd %xmm7, %xmm1
movsd %xmm1, 0x10(%rdi)
movsd 0x28(%rsi), %xmm1
movsd 0x30(%rsi), %xmm2
movsd 0x58(%rsi), %xmm3
movsd 0x50(%rsi), %xmm4
movsd 0x38(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x48(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x10(%rsi), %xmm3
mulsd 0x8(%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x18(%rsi), %xmm1
addsd %xmm7, %xmm1
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x18(%rdi)
movsd 0x40(%rsi), %xmm1
movsd 0x50(%rsi), %xmm2
movsd 0x78(%rsi), %xmm3
movsd 0x70(%rsi), %xmm4
movsd 0x58(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x60(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x30(%rsi), %xmm3
mulsd 0x20(%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x38(%rsi), %xmm1
addsd %xmm7, %xmm1
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x20(%rdi)
movsd 0x40(%rsi), %xmm1
movsd 0x50(%rsi), %xmm2
movsd 0x78(%rsi), %xmm3
movsd 0x70(%rsi), %xmm4
movsd 0x58(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x60(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x10(%rsi), %xmm3
mulsd (%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x18(%rsi), %xmm1
addsd %xmm7, %xmm1
movsd %xmm1, 0x28(%rdi)
movsd 0x20(%rsi), %xmm1
movsd 0x30(%rsi), %xmm3
movsd 0x78(%rsi), %xmm2
movsd 0x38(%rsi), %xmm4
movapd %xmm4, %xmm5
movapd %xmm3, %xmm6
mulsd %xmm2, %xmm6
movsd 0x60(%rsi), %xmm7
mulsd %xmm7, %xmm4
mulsd %xmm1, %xmm2
subsd %xmm4, %xmm2
movsd 0x70(%rsi), %xmm4
mulsd %xmm4, %xmm5
mulsd 0x10(%rsi), %xmm2
subsd %xmm5, %xmm6
mulsd (%rsi), %xmm6
mulsd %xmm7, %xmm3
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd 0x18(%rsi), %xmm1
subsd %xmm2, %xmm6
addsd %xmm6, %xmm1
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x30(%rdi)
movsd 0x20(%rsi), %xmm1
movsd 0x30(%rsi), %xmm2
movsd 0x58(%rsi), %xmm3
movsd 0x50(%rsi), %xmm4
movsd 0x38(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x40(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x10(%rsi), %xmm3
mulsd (%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x18(%rsi), %xmm1
addsd %xmm7, %xmm1
movsd %xmm1, 0x38(%rdi)
movsd 0x40(%rsi), %xmm1
movsd 0x48(%rsi), %xmm2
movsd 0x78(%rsi), %xmm3
movsd 0x68(%rsi), %xmm4
movsd 0x58(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x60(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x28(%rsi), %xmm3
mulsd 0x20(%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x38(%rsi), %xmm1
addsd %xmm7, %xmm1
movsd %xmm1, 0x40(%rdi)
movsd 0x40(%rsi), %xmm1
movsd 0x48(%rsi), %xmm3
movsd 0x78(%rsi), %xmm2
movsd 0x58(%rsi), %xmm4
movapd %xmm4, %xmm5
movapd %xmm3, %xmm6
mulsd %xmm2, %xmm6
movsd 0x60(%rsi), %xmm7
mulsd %xmm7, %xmm4
mulsd %xmm1, %xmm2
subsd %xmm4, %xmm2
movsd 0x68(%rsi), %xmm4
mulsd %xmm4, %xmm5
mulsd 0x8(%rsi), %xmm2
subsd %xmm5, %xmm6
mulsd (%rsi), %xmm6
mulsd %xmm7, %xmm3
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd 0x18(%rsi), %xmm1
subsd %xmm2, %xmm6
addsd %xmm6, %xmm1
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x48(%rdi)
movsd 0x20(%rsi), %xmm1
movsd 0x28(%rsi), %xmm2
movsd 0x78(%rsi), %xmm3
movsd 0x68(%rsi), %xmm4
movsd 0x38(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x60(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x8(%rsi), %xmm3
mulsd (%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x18(%rsi), %xmm1
addsd %xmm7, %xmm1
movsd %xmm1, 0x50(%rdi)
movsd 0x20(%rsi), %xmm1
movsd 0x28(%rsi), %xmm2
movsd 0x58(%rsi), %xmm3
movsd 0x48(%rsi), %xmm4
movsd 0x38(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x40(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x8(%rsi), %xmm3
mulsd (%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x18(%rsi), %xmm1
addsd %xmm7, %xmm1
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x58(%rdi)
movsd 0x40(%rsi), %xmm1
movsd 0x48(%rsi), %xmm3
movsd 0x70(%rsi), %xmm2
movsd 0x50(%rsi), %xmm4
movapd %xmm4, %xmm5
movapd %xmm3, %xmm6
mulsd %xmm2, %xmm6
movsd 0x60(%rsi), %xmm7
mulsd %xmm7, %xmm4
mulsd %xmm1, %xmm2
subsd %xmm4, %xmm2
movsd 0x68(%rsi), %xmm4
mulsd %xmm4, %xmm5
mulsd 0x28(%rsi), %xmm2
subsd %xmm5, %xmm6
mulsd 0x20(%rsi), %xmm6
mulsd %xmm7, %xmm3
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd 0x30(%rsi), %xmm1
subsd %xmm2, %xmm6
addsd %xmm6, %xmm1
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x60(%rdi)
movsd 0x40(%rsi), %xmm1
movsd 0x48(%rsi), %xmm2
movsd 0x70(%rsi), %xmm3
movsd 0x68(%rsi), %xmm4
movsd 0x50(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x60(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x8(%rsi), %xmm3
mulsd (%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x10(%rsi), %xmm1
addsd %xmm7, %xmm1
movsd %xmm1, 0x68(%rdi)
movsd 0x20(%rsi), %xmm1
movsd 0x28(%rsi), %xmm2
movsd 0x70(%rsi), %xmm3
movsd 0x68(%rsi), %xmm4
movsd 0x30(%rsi), %xmm5
movapd %xmm5, %xmm6
mulsd %xmm4, %xmm6
movapd %xmm2, %xmm7
mulsd %xmm3, %xmm7
subsd %xmm6, %xmm7
movsd 0x60(%rsi), %xmm6
mulsd %xmm6, %xmm5
mulsd %xmm1, %xmm3
subsd %xmm5, %xmm3
mulsd 0x8(%rsi), %xmm3
mulsd (%rsi), %xmm7
subsd %xmm3, %xmm7
mulsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm2, %xmm1
mulsd 0x10(%rsi), %xmm1
addsd %xmm7, %xmm1
xorpd %xmm0, %xmm1
movlpd %xmm1, 0x70(%rdi)
movsd 0x20(%rsi), %xmm0
movsd 0x28(%rsi), %xmm1
movsd 0x50(%rsi), %xmm2
movsd 0x48(%rsi), %xmm3
movsd 0x30(%rsi), %xmm4
movapd %xmm4, %xmm5
mulsd %xmm3, %xmm5
movapd %xmm1, %xmm6
mulsd %xmm2, %xmm6
subsd %xmm5, %xmm6
movsd 0x40(%rsi), %xmm5
mulsd %xmm5, %xmm4
mulsd %xmm0, %xmm2
subsd %xmm4, %xmm2
mulsd 0x8(%rsi), %xmm2
mulsd (%rsi), %xmm6
subsd %xmm2, %xmm6
mulsd %xmm5, %xmm1
mulsd %xmm3, %xmm0
subsd %xmm1, %xmm0
mulsd 0x10(%rsi), %xmm0
addsd %xmm6, %xmm0
pushq $0x78
popq %rax
movsd %xmm0, (%rdi,%rax)
retq