// File: /workspace/github_c_makefile_star2_O0/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmQuaternionRotation
void hpmQuaternionRotation(float* quat, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    HPMquat *q = (HPMquat *) quat;
    initMat4(m);
    float xx, xy, xz, xw, yy, yz, yw, zz, zw;
    xx = q->x * q->x;
    xy = q->x * q->y;
    xz = q->x * q->z;
    xw = q->x * q->w;
    yy = q->y * q->y;
    yz = q->y * q->z;
    yw = q->y * q->w;
    zz = q->z * q->z;
    zw = q->z * q->w;
    m->_11 = 1.0 - (2.0 * (zz + yy));
    m->_12 = 2.0 * (xy - zw);
    m->_13 = 2.0 * (xz + yw);

    m->_21 = 2.0 * (xy + zw);
    m->_22 = 1.0 - (2.0 * (xx + zz));
    m->_23 = 2.0 * (yz - xw);

    m->_31 = 2.0 * (xz - yw);
    m->_32 = 2.0 * (yz + xw);
    m->_33 = 1.0 - (2.0 * (xx + yy));
    
    m->_44 = 1.0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6360
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
mulss (%rax), %xmm0
movss %xmm0, -0x24(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0x4(%rax), %xmm0
movss %xmm0, -0x28(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0x8(%rax), %xmm0
movss %xmm0, -0x2c(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0xc(%rax), %xmm0
movss %xmm0, -0x30(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0x4(%rax), %xmm0
movss %xmm0, -0x34(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0x8(%rax), %xmm0
movss %xmm0, -0x38(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0xc(%rax), %xmm0
movss %xmm0, -0x3c(%rbp)
movq -0x20(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0x8(%rax), %xmm0
movss %xmm0, -0x40(%rbp)
movq -0x20(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x20(%rbp), %rax
mulss 0xc(%rax), %xmm0
movss %xmm0, -0x44(%rbp)
movss -0x40(%rbp), %xmm0
addss -0x34(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
addsd %xmm1, %xmm1
movsd 0x8593(%rip), %xmm0     # 0xf010
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, (%rax)
movss -0x28(%rbp), %xmm0
subss -0x44(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x8575(%rip), %xmm0     # 0xf018
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x10(%rax)
movss -0x2c(%rbp), %xmm0
addss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x854e(%rip), %xmm0     # 0xf018
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x20(%rax)
movss -0x28(%rbp), %xmm0
addss -0x44(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x8527(%rip), %xmm0     # 0xf018
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x4(%rax)
movss -0x24(%rbp), %xmm0
addss -0x40(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
addsd %xmm1, %xmm1
movsd 0x84f4(%rip), %xmm0     # 0xf010
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x14(%rax)
movss -0x38(%rbp), %xmm0
subss -0x30(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x84d5(%rip), %xmm0     # 0xf018
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x24(%rax)
movss -0x2c(%rbp), %xmm0
subss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x84ae(%rip), %xmm0     # 0xf018
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x8(%rax)
movss -0x38(%rbp), %xmm0
addss -0x30(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x8487(%rip), %xmm0     # 0xf018
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x18(%rax)
movss -0x24(%rbp), %xmm0
addss -0x34(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
addsd %xmm1, %xmm1
movsd 0x8454(%rip), %xmm0     # 0xf010
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x28(%rax)
movq -0x18(%rbp), %rax
movss 0x8457(%rip), %xmm0     # 0xf030
movss %xmm0, 0x3c(%rax)
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)