// File: /workspace/github_c_makefile_star2_O0/FredTheDino[P]Fog/src/engine/math/block_matrix.h
// Function: inverse(Mat4)
Mat4 inverse(Mat4 m) {
    Mat4 inv = {};

    m = transpose(m);

    inv.__[0] = m.__[5] * m.__[10] * m.__[15] - m.__[5] * m.__[11] * m.__[14] -
                m.__[9] * m.__[6] * m.__[15] + m.__[9] * m.__[7] * m.__[14] +
                m.__[13] * m.__[6] * m.__[11] - m.__[13] * m.__[7] * m.__[10];

    inv.__[4] = -m.__[4] * m.__[10] * m.__[15] + m.__[4] * m.__[11] * m.__[14] +
                m.__[8] * m.__[6] * m.__[15] - m.__[8] * m.__[7] * m.__[14] -
                m.__[12] * m.__[6] * m.__[11] + m.__[12] * m.__[7] * m.__[10];

    inv.__[8] = m.__[4] * m.__[9] * m.__[15] - m.__[4] * m.__[11] * m.__[13] -
                m.__[8] * m.__[5] * m.__[15] + m.__[8] * m.__[7] * m.__[13] +
                m.__[12] * m.__[5] * m.__[11] - m.__[12] * m.__[7] * m.__[9];

    inv.__[12] = -m.__[4] * m.__[9] * m.__[14] + m.__[4] * m.__[10] * m.__[13] +
                 m.__[8] * m.__[5] * m.__[14] - m.__[8] * m.__[6] * m.__[13] -
                 m.__[12] * m.__[5] * m.__[10] + m.__[12] * m.__[6] * m.__[9];

    inv.__[1] = -m.__[1] * m.__[10] * m.__[15] + m.__[1] * m.__[11] * m.__[14] +
                m.__[9] * m.__[2] * m.__[15] - m.__[9] * m.__[3] * m.__[14] -
                m.__[13] * m.__[2] * m.__[11] + m.__[13] * m.__[3] * m.__[10];

    inv.__[5] = m.__[0] * m.__[10] * m.__[15] - m.__[0] * m.__[11] * m.__[14] -
                m.__[8] * m.__[2] * m.__[15] + m.__[8] * m.__[3] * m.__[14] +
                m.__[12] * m.__[2] * m.__[11] - m.__[12] * m.__[3] * m.__[10];

    inv.__[9] = -m.__[0] * m.__[9] * m.__[15] + m.__[0] * m.__[11] * m.__[13] +
                m.__[8] * m.__[1] * m.__[15] - m.__[8] * m.__[3] * m.__[13] -
                m.__[12] * m.__[1] * m.__[11] + m.__[12] * m.__[3] * m.__[9];

    inv.__[13] = m.__[0] * m.__[9] * m.__[14] - m.__[0] * m.__[10] * m.__[13] -
                 m.__[8] * m.__[1] * m.__[14] + m.__[8] * m.__[2] * m.__[13] +
                 m.__[12] * m.__[1] * m.__[10] - m.__[12] * m.__[2] * m.__[9];

    inv.__[2] = m.__[1] * m.__[6] * m.__[15] - m.__[1] * m.__[7] * m.__[14] -
                m.__[5] * m.__[2] * m.__[15] + m.__[5] * m.__[3] * m.__[14] +
                m.__[13] * m.__[2] * m.__[7] - m.__[13] * m.__[3] * m.__[6];

    inv.__[6] = -m.__[0] * m.__[6] * m.__[15] + m.__[0] * m.__[7] * m.__[14] +
                m.__[4] * m.__[2] * m.__[15] - m.__[4] * m.__[3] * m.__[14] -
                m.__[12] * m.__[2] * m.__[7] + m.__[12] * m.__[3] * m.__[6];

    inv.__[10] = m.__[0] * m.__[5] * m.__[15] - m.__[0] * m.__[7] * m.__[13] -
                 m.__[4] * m.__[1] * m.__[15] + m.__[4] * m.__[3] * m.__[13] +
                 m.__[12] * m.__[1] * m.__[7] - m.__[12] * m.__[3] * m.__[5];

    inv.__[14] = -m.__[0] * m.__[5] * m.__[14] + m.__[0] * m.__[6] * m.__[13] +
                 m.__[4] * m.__[1] * m.__[14] - m.__[4] * m.__[2] * m.__[13] -
                 m.__[12] * m.__[1] * m.__[6] + m.__[12] * m.__[2] * m.__[5];

    inv.__[3] = -m.__[1] * m.__[6] * m.__[11] + m.__[1] * m.__[7] * m.__[10] +
                m.__[5] * m.__[2] * m.__[11] - m.__[5] * m.__[3] * m.__[10] -
                m.__[9] * m.__[2] * m.__[7] + m.__[9] * m.__[3] * m.__[6];

    inv.__[7] = m.__[0] * m.__[6] * m.__[11] - m.__[0] * m.__[7] * m.__[10] -
                m.__[4] * m.__[2] * m.__[11] + m.__[4] * m.__[3] * m.__[10] +
                m.__[8] * m.__[2] * m.__[7] - m.__[8] * m.__[3] * m.__[6];

    inv.__[11] = -m.__[0] * m.__[5] * m.__[11] + m.__[0] * m.__[7] * m.__[9] +
                 m.__[4] * m.__[1] * m.__[11] - m.__[4] * m.__[3] * m.__[9] -
                 m.__[8] * m.__[1] * m.__[7] + m.__[8] * m.__[3] * m.__[5];

    inv.__[15] = m.__[0] * m.__[5] * m.__[10] - m.__[0] * m.__[6] * m.__[9] -
                 m.__[4] * m.__[1] * m.__[10] + m.__[4] * m.__[2] * m.__[9] +
                 m.__[8] * m.__[1] * m.__[6] - m.__[8] * m.__[2] * m.__[5];

    real det = m.__[0] * inv.__[0] + m.__[1] * inv.__[4] + m.__[2] * inv.__[8] +
               m.__[3] * inv.__[12];

    if (det == 0) return {};

    det = 1.0f / det;

    for (u8 i = 0; i < 16; i++) inv.__[i] *= det;

    return transpose(inv);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x120(%rbp)
movq %rdi, -0x118(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq -0x40(%rbp), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x2150
movq -0x110(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
movl $0x40, %edx
callq 0x2200
movups -0xc0(%rbp), %xmm0
movups -0xb0(%rbp), %xmm1
movups -0xa0(%rbp), %xmm2
movups -0x90(%rbp), %xmm3
movq %rsp, %rax
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x80(%rbp), %rdi
callq 0x45f0
movq -0x110(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x40, %edx
callq 0x2200
movq -0x110(%rbp), %rax
movss 0x14(%rax), %xmm0
mulss 0x28(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss 0x14(%rax), %xmm1
mulss 0x2c(%rax), %xmm1
mulss 0x38(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x24(%rax), %xmm1
mulss 0x18(%rax), %xmm1
movss 0x3c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x24(%rax), %xmm0
mulss 0x1c(%rax), %xmm0
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x34(%rax), %xmm1
mulss 0x18(%rax), %xmm1
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x34(%rax), %xmm0
mulss 0x1c(%rax), %xmm0
movss 0x28(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x40(%rbp)
movss 0x10(%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x28(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss 0x10(%rax), %xmm1
mulss 0x2c(%rax), %xmm1
mulss 0x38(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x18(%rax), %xmm1
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0x1c(%rax), %xmm0
movss 0x38(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x18(%rax), %xmm1
movss 0x2c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0x1c(%rax), %xmm0
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x30(%rbp)
movss 0x10(%rax), %xmm0
mulss 0x24(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss 0x10(%rax), %xmm1
mulss 0x2c(%rax), %xmm1
mulss 0x34(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x14(%rax), %xmm1
movss 0x3c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0x1c(%rax), %xmm0
movss 0x34(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x14(%rax), %xmm1
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0x1c(%rax), %xmm0
movss 0x24(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x20(%rbp)
movss 0x10(%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x24(%rax), %xmm0
movss 0x38(%rax), %xmm2
movss 0x10(%rax), %xmm1
mulss 0x28(%rax), %xmm1
mulss 0x34(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x14(%rax), %xmm1
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0x18(%rax), %xmm0
movss 0x34(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x14(%rax), %xmm1
movss 0x28(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0x18(%rax), %xmm0
movss 0x24(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x10(%rbp)
movss 0x4(%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x28(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss 0x4(%rax), %xmm1
mulss 0x2c(%rax), %xmm1
mulss 0x38(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x24(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x24(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x38(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x34(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x2c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x34(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x3c(%rbp)
movss (%rax), %xmm0
mulss 0x28(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x2c(%rax), %xmm1
mulss 0x38(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x3c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x28(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movss (%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x24(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x2c(%rax), %xmm1
mulss 0x34(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x34(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x2c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x24(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x1c(%rbp)
movss (%rax), %xmm0
mulss 0x24(%rax), %xmm0
movss 0x38(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x28(%rax), %xmm1
mulss 0x34(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x38(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0x8(%rax), %xmm0
movss 0x34(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0x8(%rax), %xmm0
movss 0x24(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0xc(%rbp)
movss 0x4(%rax), %xmm0
mulss 0x18(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss 0x4(%rax), %xmm1
mulss 0x1c(%rax), %xmm1
mulss 0x38(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x14(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x3c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x14(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x34(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x1c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x34(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x18(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x38(%rbp)
movss (%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x18(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x1c(%rax), %xmm1
mulss 0x38(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x10(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x3c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x10(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x38(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x1c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x18(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x28(%rbp)
movss (%rax), %xmm0
mulss 0x14(%rax), %xmm0
movss 0x3c(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x1c(%rax), %xmm1
mulss 0x34(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x10(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x3c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x10(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x34(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x1c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x14(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x18(%rbp)
movss (%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x14(%rax), %xmm0
movss 0x38(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x18(%rax), %xmm1
mulss 0x34(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x10(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x38(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x10(%rax), %xmm0
mulss 0x8(%rax), %xmm0
movss 0x34(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x30(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x18(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x30(%rax), %xmm0
mulss 0x8(%rax), %xmm0
movss 0x14(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x8(%rbp)
movss 0x4(%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x18(%rax), %xmm0
movss 0x2c(%rax), %xmm2
movss 0x4(%rax), %xmm1
mulss 0x1c(%rax), %xmm1
mulss 0x28(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x14(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x14(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x28(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x24(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x1c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x24(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x18(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x34(%rbp)
movss (%rax), %xmm0
mulss 0x18(%rax), %xmm0
movss 0x2c(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x1c(%rax), %xmm1
mulss 0x28(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x10(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x2c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x10(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x28(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x8(%rax), %xmm1
movss 0x1c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x18(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x24(%rbp)
movss (%rax), %xmm0
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss 0x14(%rax), %xmm0
movss 0x2c(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x1c(%rax), %xmm1
mulss 0x24(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x10(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x2c(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x10(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x24(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x1c(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0xc(%rax), %xmm0
movss 0x14(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x14(%rbp)
movss (%rax), %xmm0
mulss 0x14(%rax), %xmm0
movss 0x28(%rax), %xmm2
movss (%rax), %xmm1
mulss 0x18(%rax), %xmm1
mulss 0x24(%rax), %xmm1
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x10(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x28(%rax), %xmm2
movd %xmm1, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm1
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x10(%rax), %xmm0
mulss 0x8(%rax), %xmm0
movss 0x24(%rax), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x20(%rax), %xmm1
mulss 0x4(%rax), %xmm1
movss 0x18(%rax), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0x20(%rax), %xmm0
mulss 0x8(%rax), %xmm0
movss 0x14(%rax), %xmm2
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x4(%rbp)
movss (%rax), %xmm0
movss -0x40(%rbp), %xmm2
movss 0x4(%rax), %xmm1
mulss -0x30(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss 0x8(%rax), %xmm1
movss -0x20(%rbp), %xmm2
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movss 0xc(%rax), %xmm0
movss -0x10(%rbp), %xmm2
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0xc4(%rbp)
movss -0xc4(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x529e
jp 0x529e
movq -0x120(%rbp), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x2150
jmp 0x5343
movss 0x22d5e(%rip), %xmm0    # 0x28004
divss -0xc4(%rbp), %xmm0
movss %xmm0, -0xc4(%rbp)
movb $0x0, -0xc5(%rbp)
movzbl -0xc5(%rbp), %eax
cmpl $0x10, %eax
jge 0x52f4
movss -0xc4(%rbp), %xmm0
movzbl -0xc5(%rbp), %eax
mulss -0x40(%rbp,%rax,4), %xmm0
movss %xmm0, -0x40(%rbp,%rax,4)
movb -0xc5(%rbp), %al
addb $0x1, %al
movb %al, -0xc5(%rbp)
jmp 0x52bd
leaq -0x108(%rbp), %rdi
leaq -0x40(%rbp), %rsi
movl $0x40, %edx
callq 0x2200
movq -0x120(%rbp), %rdi
movups -0x108(%rbp), %xmm0
movups -0xf8(%rbp), %xmm1
movups -0xe8(%rbp), %xmm2
movups -0xd8(%rbp), %xmm3
movq %rsp, %rax
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x45f0
movq -0x118(%rbp), %rax
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
nopw %cs:(%rax,%rax)