// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmMultMat4
void hpmMultMat4(const float *matA, const float *matB, float *result){
    HPMmat4 *a = (HPMmat4 *) matA;
    HPMmat4 *b = (HPMmat4 *) matB;
    HPMmat4 *r = (HPMmat4 *) result;
    r->_11 = a->_11*b->_11 + a->_12*b->_21 + a->_13*b->_31 + a->_14*b->_41;
    r->_12 = a->_11*b->_12 + a->_12*b->_22 + a->_13*b->_32 + a->_14*b->_42;
    r->_13 = a->_11*b->_13 + a->_12*b->_23 + a->_13*b->_33 + a->_14*b->_43;
    r->_14 = a->_11*b->_14 + a->_12*b->_24 + a->_13*b->_34 + a->_14*b->_44;

    r->_21 = a->_21*b->_11 + a->_22*b->_21 + a->_23*b->_31 + a->_24*b->_41;
    r->_22 = a->_21*b->_12 + a->_22*b->_22 + a->_23*b->_32 + a->_24*b->_42;
    r->_23 = a->_21*b->_13 + a->_22*b->_23 + a->_23*b->_33 + a->_24*b->_43;
    r->_24 = a->_21*b->_14 + a->_22*b->_24 + a->_23*b->_34 + a->_24*b->_44;

    r->_31 = a->_31*b->_11 + a->_32*b->_21 + a->_33*b->_31 + a->_34*b->_41;
    r->_32 = a->_31*b->_12 + a->_32*b->_22 + a->_33*b->_32 + a->_34*b->_42;
    r->_33 = a->_31*b->_13 + a->_32*b->_23 + a->_33*b->_33 + a->_34*b->_43;
    r->_34 = a->_31*b->_14 + a->_32*b->_24 + a->_33*b->_34 + a->_34*b->_44;

    r->_41 = a->_41*b->_11 + a->_42*b->_21 + a->_43*b->_31 + a->_44*b->_41;
    r->_42 = a->_41*b->_12 + a->_42*b->_22 + a->_43*b->_32 + a->_44*b->_42;
    r->_43 = a->_41*b->_13 + a->_42*b->_23 + a->_43*b->_33 + a->_44*b->_43;
    r->_44 = a->_41*b->_14 + a->_42*b->_24 + a->_43*b->_34 + a->_44*b->_44;
}

// Assembly:
movss (%rdi), %xmm0
movss 0x10(%rdi), %xmm1
movss 0x4(%rsi), %xmm9
movss 0x8(%rsi), %xmm4
movaps %xmm1, %xmm2
mulss %xmm9, %xmm2
mulss (%rsi), %xmm0
addss %xmm2, %xmm0
movss 0x20(%rdi), %xmm6
movaps %xmm6, %xmm2
mulss %xmm4, %xmm2
addss %xmm0, %xmm2
movss 0x30(%rdi), %xmm8
movss 0xc(%rsi), %xmm0
movss %xmm0, -0x14(%rsp)
movaps %xmm8, %xmm3
mulss %xmm0, %xmm3
addss %xmm2, %xmm3
movss %xmm3, (%rdx)
movss (%rdi), %xmm3
movss 0x14(%rsi), %xmm10
movss 0x18(%rsi), %xmm5
mulss %xmm10, %xmm1
movss 0x10(%rsi), %xmm2
mulss %xmm3, %xmm2
addss %xmm1, %xmm2
movaps %xmm6, %xmm7
mulss %xmm5, %xmm7
addss %xmm2, %xmm7
movss 0x1c(%rsi), %xmm0
movss %xmm0, -0x18(%rsp)
movaps %xmm8, %xmm2
mulss %xmm0, %xmm2
addss %xmm7, %xmm2
movss %xmm2, 0x10(%rdx)
movss 0x10(%rdi), %xmm13
movss 0x24(%rsi), %xmm11
movss 0x28(%rsi), %xmm0
movaps %xmm13, %xmm2
mulss %xmm11, %xmm2
movss 0x20(%rsi), %xmm12
mulss %xmm3, %xmm12
addss %xmm2, %xmm12
mulss %xmm0, %xmm6
movaps %xmm0, %xmm2
movss %xmm0, -0x4(%rsp)
addss %xmm12, %xmm6
movss 0x2c(%rsi), %xmm0
movss %xmm0, -0x10(%rsp)
movaps %xmm8, %xmm12
mulss %xmm0, %xmm12
addss %xmm6, %xmm12
movss %xmm12, 0x20(%rdx)
movss 0x34(%rsi), %xmm12
movss 0x38(%rsi), %xmm6
mulss 0x30(%rsi), %xmm3
mulss %xmm12, %xmm13
addss %xmm13, %xmm3
movss 0x20(%rdi), %xmm13
mulss %xmm6, %xmm13
addss %xmm3, %xmm13
movss 0x3c(%rsi), %xmm0
movss %xmm0, -0x8(%rsp)
mulss %xmm0, %xmm8
addss %xmm13, %xmm8
movss %xmm8, 0x30(%rdx)
movss (%rsi), %xmm8
movss 0x14(%rdi), %xmm0
movss 0x24(%rdi), %xmm14
mulss %xmm0, %xmm9
movss 0x4(%rdi), %xmm13
mulss %xmm8, %xmm13
addss %xmm9, %xmm13
movaps %xmm14, %xmm9
mulss %xmm4, %xmm9
addss %xmm13, %xmm9
movss 0x34(%rdi), %xmm13
movaps %xmm13, %xmm15
movss -0x14(%rsp), %xmm3
mulss %xmm3, %xmm15
addss %xmm9, %xmm15
movss %xmm15, 0x4(%rdx)
movss 0x4(%rdi), %xmm1
mulss %xmm0, %xmm10
movss 0x10(%rsi), %xmm9
movaps %xmm1, %xmm0
mulss %xmm9, %xmm0
addss %xmm10, %xmm0
movaps %xmm14, %xmm10
mulss %xmm5, %xmm10
addss %xmm0, %xmm10
movaps %xmm13, %xmm0
movss -0x18(%rsp), %xmm7
mulss %xmm7, %xmm0
addss %xmm10, %xmm0
movss %xmm0, 0x14(%rdx)
movss 0x14(%rdi), %xmm0
mulss %xmm0, %xmm11
movss 0x20(%rsi), %xmm10
movaps %xmm1, %xmm15
mulss %xmm10, %xmm15
addss %xmm11, %xmm15
mulss %xmm2, %xmm14
addss %xmm15, %xmm14
movaps %xmm13, %xmm11
mulss -0x10(%rsp), %xmm11
addss %xmm14, %xmm11
movss %xmm11, 0x24(%rdx)
movss 0x30(%rsi), %xmm2
movss %xmm2, -0xc(%rsp)
mulss %xmm0, %xmm12
mulss %xmm2, %xmm1
addss %xmm12, %xmm1
movss 0x24(%rdi), %xmm0
mulss %xmm6, %xmm0
addss %xmm1, %xmm0
movss -0x8(%rsp), %xmm11
mulss %xmm11, %xmm13
addss %xmm0, %xmm13
movss %xmm13, 0x34(%rdx)
movss 0x4(%rsi), %xmm12
movss 0x18(%rdi), %xmm0
movaps %xmm0, %xmm1
mulss %xmm12, %xmm1
movss 0x8(%rdi), %xmm13
mulss %xmm8, %xmm13
addss %xmm1, %xmm13
movss 0x28(%rdi), %xmm14
mulss %xmm14, %xmm4
addss %xmm13, %xmm4
movss 0x38(%rdi), %xmm13
movaps %xmm13, %xmm1
mulss %xmm3, %xmm1
addss %xmm4, %xmm1
movss %xmm1, 0x8(%rdx)
movss 0x14(%rsi), %xmm4
mulss %xmm4, %xmm0
movss 0x8(%rdi), %xmm2
movaps %xmm2, %xmm1
mulss %xmm9, %xmm1
addss %xmm0, %xmm1
mulss %xmm14, %xmm5
addss %xmm1, %xmm5
movaps %xmm13, %xmm0
mulss %xmm7, %xmm0
addss %xmm5, %xmm0
movss %xmm0, 0x18(%rdx)
movss 0x18(%rdi), %xmm0
movss 0x24(%rsi), %xmm5
movaps %xmm0, %xmm1
mulss %xmm5, %xmm1
movaps %xmm2, %xmm15
mulss %xmm10, %xmm15
addss %xmm1, %xmm15
mulss -0x4(%rsp), %xmm14
addss %xmm15, %xmm14
movaps %xmm13, %xmm1
movss -0x10(%rsp), %xmm15
mulss %xmm15, %xmm1
addss %xmm14, %xmm1
movss %xmm1, 0x28(%rdx)
movss 0x34(%rsi), %xmm7
mulss %xmm7, %xmm0
movss -0xc(%rsp), %xmm3
mulss %xmm3, %xmm2
mulss 0x28(%rdi), %xmm6
addss %xmm0, %xmm2
addss %xmm2, %xmm6
mulss %xmm11, %xmm13
addss %xmm6, %xmm13
movss %xmm13, 0x38(%rdx)
movss 0x1c(%rdi), %xmm0
movss 0x2c(%rdi), %xmm13
mulss %xmm0, %xmm12
mulss 0xc(%rdi), %xmm8
addss %xmm12, %xmm8
movss 0x8(%rsi), %xmm1
mulss %xmm13, %xmm1
addss %xmm8, %xmm1
movss 0x3c(%rdi), %xmm6
movss -0x14(%rsp), %xmm2
mulss %xmm6, %xmm2
addss %xmm1, %xmm2
movss %xmm2, 0xc(%rdx)
mulss %xmm0, %xmm4
movss 0xc(%rdi), %xmm0
mulss %xmm0, %xmm9
addss %xmm4, %xmm9
movss 0x18(%rsi), %xmm1
mulss %xmm13, %xmm1
addss %xmm9, %xmm1
movss -0x18(%rsp), %xmm2
mulss %xmm6, %xmm2
addss %xmm1, %xmm2
movss %xmm2, 0x1c(%rdx)
movss 0x1c(%rdi), %xmm1
mulss %xmm1, %xmm5
mulss %xmm0, %xmm10
addss %xmm5, %xmm10
mulss 0x28(%rsi), %xmm13
addss %xmm10, %xmm13
movaps %xmm15, %xmm2
mulss %xmm6, %xmm2
addss %xmm13, %xmm2
movss %xmm2, 0x2c(%rdx)
mulss %xmm1, %xmm7
mulss %xmm3, %xmm0
addss %xmm7, %xmm0
movss 0x2c(%rdi), %xmm1
mulss 0x38(%rsi), %xmm1
addss %xmm0, %xmm1
mulss %xmm11, %xmm6
addss %xmm1, %xmm6
movss %xmm6, 0x3c(%rdx)
retq