// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x28(%rbp), %rax
movss (%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x10(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x4(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x20(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x8(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x30(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0xc(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, (%rax)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x10(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x10(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x14(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x20(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x18(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x30(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x1c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x10(%rax)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x20(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x10(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x24(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x20(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x30(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x20(%rax)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x30(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x10(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x34(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x20(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x30(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x30(%rax)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x28(%rbp), %rax
movss (%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x14(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x4(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x24(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x8(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x34(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0xc(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x4(%rax)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x10(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x14(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x14(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x24(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x18(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x34(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x1c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x14(%rax)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x20(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x14(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x24(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x24(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x34(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x24(%rax)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x30(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x14(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x34(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x24(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x34(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x34(%rax)
movq -0x20(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x28(%rbp), %rax
movss (%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x18(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x4(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x28(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x8(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x38(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0xc(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x8(%rax)
movq -0x20(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x10(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x18(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x14(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x28(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x18(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x38(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x1c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x18(%rax)
movq -0x20(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x20(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x18(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x24(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x28(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x38(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x28(%rax)
movq -0x20(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x30(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x18(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x34(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x28(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x38(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x38(%rax)
movq -0x20(%rbp), %rax
movss 0xc(%rax), %xmm0
movq -0x28(%rbp), %rax
movss (%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x1c(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x4(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x2c(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x8(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x3c(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0xc(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0xc(%rax)
movq -0x20(%rbp), %rax
movss 0xc(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x10(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x1c(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x14(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x2c(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x18(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x3c(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x1c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x1c(%rax)
movq -0x20(%rbp), %rax
movss 0xc(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x20(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x1c(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x24(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x2c(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x3c(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x2c(%rax)
movq -0x20(%rbp), %rax
movss 0xc(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x30(%rax), %xmm2
movq -0x20(%rbp), %rax
movss 0x1c(%rax), %xmm1
movq -0x28(%rbp), %rax
mulss 0x34(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x20(%rbp), %rax
movss 0x2c(%rax), %xmm1
movq -0x28(%rbp), %rax
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x20(%rbp), %rax
movss 0x3c(%rax), %xmm0
movq -0x28(%rbp), %rax
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x3c(%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)