// File: /workspace/github_c_makefile_star2_O0/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmFastInverseTranspose
void hpmFastInverseTranspose(const float *mat, float *result){
    HPMmat4 *m = (HPMmat4 *) mat;
    HPMmat4 *r = (HPMmat4 *) result;
    // Rotation component
    r->_11 = m->_11;
    r->_12 = m->_12;
    r->_13 = m->_13;

    r->_21 = m->_21;
    r->_22 = m->_22;
    r->_23 = m->_23;

    r->_31 = m->_31;
    r->_32 = m->_32;
    r->_33 = m->_33;
    // Translation component
    r->_41 = -(m->_11*m->_14 + m->_21*m->_24 + m->_31*m->_34);
    r->_42 = -(m->_12*m->_14 + m->_22*m->_24 + m->_32*m->_34);
    r->_43 = -(m->_13*m->_14 + m->_23*m->_24 + m->_33*m->_34);
    // Last column
    r->_14 = 0;
    r->_24 = 0;
    r->_34 = 0;
    r->_44 = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, (%rax)
movq -0x18(%rbp), %rax
movss 0x10(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x10(%rax)
movq -0x18(%rbp), %rax
movss 0x20(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x20(%rax)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x4(%rax)
movq -0x18(%rbp), %rax
movss 0x14(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x14(%rax)
movq -0x18(%rbp), %rax
movss 0x24(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x24(%rax)
movq -0x18(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x8(%rax)
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x18(%rax)
movq -0x18(%rbp), %rax
movss 0x28(%rax), %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x28(%rax)
movq -0x18(%rbp), %rax
movss (%rax), %xmm1
movq -0x18(%rbp), %rax
movss 0x30(%rax), %xmm2
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x18(%rbp), %rax
mulss 0x34(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x18(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x18(%rbp), %rax
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0xc(%rax)
movq -0x18(%rbp), %rax
movss 0x10(%rax), %xmm1
movq -0x18(%rbp), %rax
movss 0x30(%rax), %xmm2
movq -0x18(%rbp), %rax
movss 0x14(%rax), %xmm0
movq -0x18(%rbp), %rax
mulss 0x34(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm0
movq -0x18(%rbp), %rax
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x1c(%rax)
movq -0x18(%rbp), %rax
movss 0x20(%rax), %xmm1
movq -0x18(%rbp), %rax
movss 0x30(%rax), %xmm2
movq -0x18(%rbp), %rax
movss 0x24(%rax), %xmm0
movq -0x18(%rbp), %rax
mulss 0x34(%rax), %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x18(%rbp), %rax
movss 0x28(%rax), %xmm0
movq -0x18(%rbp), %rax
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movq -0x20(%rbp), %rax
movss %xmm0, 0x2c(%rax)
movq -0x20(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x30(%rax)
movq -0x20(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x34(%rax)
movq -0x20(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x38(%rax)
movq -0x20(%rbp), %rax
movss 0x6991(%rip), %xmm0     # 0xf030
movss %xmm0, 0x3c(%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)