// File: /workspace/github_c_makefile_star2_O0/Nealsbo[P]C-Software-Renderer/src/libmath.c
// Function: mat4_rotationA
void mat4_rotationA( mat4 dest, float x, float y, float z, float angle ){
    float sin = sinf(angle);
    float cos = cosf(angle);

    mat4 m = {
              cos+x*x*(1-cos), x*y*(1-cos)-z*sin, x*z*(1-cos)+y*sin, 0,
            y*x*(1-cos)+z*sin,   cos+y*y*(1-cos), y*z*(1-cos)-x*sin, 0,
            z*x*(1-cos)-y*sin, z*y*(1-cos)+x*sin,   cos+z*z*(1-cos), 0,
                            0,                 0,                 0, 1 };
    mat4_copy(m, dest);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movss %xmm0, -0xc(%rbp)
movss %xmm1, -0x10(%rbp)
movss %xmm2, -0x14(%rbp)
movss %xmm3, -0x18(%rbp)
movss -0x18(%rbp), %xmm0
callq 0x1120
movss %xmm0, -0x1c(%rbp)
movss -0x18(%rbp), %xmm0
callq 0x10f0
movss %xmm0, -0x20(%rbp)
movss -0x20(%rbp), %xmm1
movss -0xc(%rbp), %xmm0
mulss -0xc(%rbp), %xmm0
movss 0x6d5f(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x60(%rbp)
movss -0xc(%rbp), %xmm0
mulss -0x10(%rbp), %xmm0
movss 0x6d3b(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
movss -0x14(%rbp), %xmm1
mulss -0x1c(%rbp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x5c(%rbp)
movss -0xc(%rbp), %xmm0
mulss -0x14(%rbp), %xmm0
movss 0x6d00(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
movss -0x10(%rbp), %xmm1
mulss -0x1c(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x58(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x54(%rbp)
movss -0x10(%rbp), %xmm0
mulss -0xc(%rbp), %xmm0
movss 0x6cca(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
movss -0x14(%rbp), %xmm1
mulss -0x1c(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x50(%rbp)
movss -0x20(%rbp), %xmm1
movss -0x10(%rbp), %xmm0
mulss -0x10(%rbp), %xmm0
movss 0x6c97(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x4c(%rbp)
movss -0x10(%rbp), %xmm0
mulss -0x14(%rbp), %xmm0
movss 0x6c73(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
movss -0xc(%rbp), %xmm1
mulss -0x1c(%rbp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x48(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x44(%rbp)
movss -0x14(%rbp), %xmm0
mulss -0xc(%rbp), %xmm0
movss 0x6c30(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
movss -0x10(%rbp), %xmm1
mulss -0x1c(%rbp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x40(%rbp)
movss -0x14(%rbp), %xmm0
mulss -0x10(%rbp), %xmm0
movss 0x6bf5(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
movss -0xc(%rbp), %xmm1
mulss -0x1c(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x3c(%rbp)
movss -0x20(%rbp), %xmm1
movss -0x14(%rbp), %xmm0
mulss -0x14(%rbp), %xmm0
movss 0x6bc2(%rip), %xmm2     # 0xe004
subss -0x20(%rbp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x38(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x34(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x30(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x28(%rbp)
movss 0x6b88(%rip), %xmm0     # 0xe004
movss %xmm0, -0x24(%rbp)
leaq -0x60(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x7140
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)