// File: koraa[P]sbcrack/cube/geom.cpp
// Function: glmatrixf::adjoint(glmatrixf const&)
void glmatrixf::adjoint(const glmatrixf &m)
{
    float a1 = m.v[0], a2 = m.v[1], a3 = m.v[2], a4 = m.v[3],
          b1 = m.v[4], b2 = m.v[5], b3 = m.v[6], b4 = m.v[7],
          c1 = m.v[8], c2 = m.v[9], c3 = m.v[10], c4 = m.v[11],
          d1 = m.v[12], d2 = m.v[13], d3 = m.v[14], d4 = m.v[15];

    v[0]  =  det3x3(b2, b3, b4, c2, c3, c4, d2, d3, d4);
    v[1]  = -det3x3(a2, a3, a4, c2, c3, c4, d2, d3, d4);
    v[2]  =  det3x3(a2, a3, a4, b2, b3, b4, d2, d3, d4);
    v[3]  = -det3x3(a2, a3, a4, b2, b3, b4, c2, c3, c4);

    v[4]  = -det3x3(b1, b3, b4, c1, c3, c4, d1, d3, d4);
    v[5]  =  det3x3(a1, a3, a4, c1, c3, c4, d1, d3, d4);
    v[6]  = -det3x3(a1, a3, a4, b1, b3, b4, d1, d3, d4);
    v[7]  =  det3x3(a1, a3, a4, b1, b3, b4, c1, c3, c4);

    v[8]  =  det3x3(b1, b2, b4, c1, c2, c4, d1, d2, d4);
    v[9]  = -det3x3(a1, a2, a4, c1, c2, c4, d1, d2, d4);
    v[10] =  det3x3(a1, a2, a4, b1, b2, b4, d1, d2, d4);
    v[11] = -det3x3(a1, a2, a4, b1, b2, b4, c1, c2, c4);

    v[12] = -det3x3(b1, b2, b3, c1, c2, c3, d1, d2, d3);
    v[13] =  det3x3(a1, a2, a3, c1, c2, c3, d1, d2, d3);
    v[14] = -det3x3(a1, a2, a3, b1, b2, b3, d1, d2, d3);
    v[15] =  det3x3(a1, a2, a3, b1, b2, b3, c1, c2, c3);
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x58(%rsp), %rax
movss (%rax), %xmm0
movss %xmm0, 0x54(%rsp)
movq 0x58(%rsp), %rax
movss 0x4(%rax), %xmm0
movss %xmm0, 0x50(%rsp)
movq 0x58(%rsp), %rax
movss 0x8(%rax), %xmm0
movss %xmm0, 0x4c(%rsp)
movq 0x58(%rsp), %rax
movss 0xc(%rax), %xmm0
movss %xmm0, 0x48(%rsp)
movq 0x58(%rsp), %rax
movss 0x10(%rax), %xmm0
movss %xmm0, 0x44(%rsp)
movq 0x58(%rsp), %rax
movss 0x14(%rax), %xmm0
movss %xmm0, 0x40(%rsp)
movq 0x58(%rsp), %rax
movss 0x18(%rax), %xmm0
movss %xmm0, 0x3c(%rsp)
movq 0x58(%rsp), %rax
movss 0x1c(%rax), %xmm0
movss %xmm0, 0x38(%rsp)
movq 0x58(%rsp), %rax
movss 0x20(%rax), %xmm0
movss %xmm0, 0x34(%rsp)
movq 0x58(%rsp), %rax
movss 0x24(%rax), %xmm0
movss %xmm0, 0x30(%rsp)
movq 0x58(%rsp), %rax
movss 0x28(%rax), %xmm0
movss %xmm0, 0x2c(%rsp)
movq 0x58(%rsp), %rax
movss 0x2c(%rax), %xmm0
movss %xmm0, 0x28(%rsp)
movq 0x58(%rsp), %rax
movss 0x30(%rax), %xmm0
movss %xmm0, 0x24(%rsp)
movq 0x58(%rsp), %rax
movss 0x34(%rax), %xmm0
movss %xmm0, 0x20(%rsp)
movq 0x58(%rsp), %rax
movss 0x38(%rax), %xmm0
movss %xmm0, 0x1c(%rsp)
movq 0x58(%rsp), %rax
movss 0x3c(%rax), %xmm0
movss %xmm0, 0x18(%rsp)
movss 0x40(%rsp), %xmm0
movss 0x3c(%rsp), %xmm1
movss 0x38(%rsp), %xmm2
movss 0x30(%rsp), %xmm3
movss 0x2c(%rsp), %xmm4
movss 0x28(%rsp), %xmm5
movss 0x20(%rsp), %xmm6
movss 0x1c(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, (%rax)
movss 0x50(%rsp), %xmm0
movss 0x4c(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x30(%rsp), %xmm3
movss 0x2c(%rsp), %xmm4
movss 0x28(%rsp), %xmm5
movss 0x20(%rsp), %xmm6
movss 0x1c(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0x4(%rax)
movss 0x50(%rsp), %xmm0
movss 0x4c(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x40(%rsp), %xmm3
movss 0x3c(%rsp), %xmm4
movss 0x38(%rsp), %xmm5
movss 0x20(%rsp), %xmm6
movss 0x1c(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, 0x8(%rax)
movss 0x50(%rsp), %xmm0
movss 0x4c(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x40(%rsp), %xmm3
movss 0x3c(%rsp), %xmm4
movss 0x38(%rsp), %xmm5
movss 0x30(%rsp), %xmm6
movss 0x2c(%rsp), %xmm7
movss 0x28(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0xc(%rax)
movss 0x44(%rsp), %xmm0
movss 0x3c(%rsp), %xmm1
movss 0x38(%rsp), %xmm2
movss 0x34(%rsp), %xmm3
movss 0x2c(%rsp), %xmm4
movss 0x28(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x1c(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0x10(%rax)
movss 0x54(%rsp), %xmm0
movss 0x4c(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x34(%rsp), %xmm3
movss 0x2c(%rsp), %xmm4
movss 0x28(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x1c(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, 0x14(%rax)
movss 0x54(%rsp), %xmm0
movss 0x4c(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x44(%rsp), %xmm3
movss 0x3c(%rsp), %xmm4
movss 0x38(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x1c(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0x18(%rax)
movss 0x54(%rsp), %xmm0
movss 0x4c(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x44(%rsp), %xmm3
movss 0x3c(%rsp), %xmm4
movss 0x38(%rsp), %xmm5
movss 0x34(%rsp), %xmm6
movss 0x2c(%rsp), %xmm7
movss 0x28(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, 0x1c(%rax)
movss 0x44(%rsp), %xmm0
movss 0x40(%rsp), %xmm1
movss 0x38(%rsp), %xmm2
movss 0x34(%rsp), %xmm3
movss 0x30(%rsp), %xmm4
movss 0x28(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x20(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, 0x20(%rax)
movss 0x54(%rsp), %xmm0
movss 0x50(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x34(%rsp), %xmm3
movss 0x30(%rsp), %xmm4
movss 0x28(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x20(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0x24(%rax)
movss 0x54(%rsp), %xmm0
movss 0x50(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x44(%rsp), %xmm3
movss 0x40(%rsp), %xmm4
movss 0x38(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x20(%rsp), %xmm7
movss 0x18(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, 0x28(%rax)
movss 0x54(%rsp), %xmm0
movss 0x50(%rsp), %xmm1
movss 0x48(%rsp), %xmm2
movss 0x44(%rsp), %xmm3
movss 0x40(%rsp), %xmm4
movss 0x38(%rsp), %xmm5
movss 0x34(%rsp), %xmm6
movss 0x30(%rsp), %xmm7
movss 0x28(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0x2c(%rax)
movss 0x44(%rsp), %xmm0
movss 0x40(%rsp), %xmm1
movss 0x3c(%rsp), %xmm2
movss 0x34(%rsp), %xmm3
movss 0x30(%rsp), %xmm4
movss 0x2c(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x20(%rsp), %xmm7
movss 0x1c(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0x30(%rax)
movss 0x54(%rsp), %xmm0
movss 0x50(%rsp), %xmm1
movss 0x4c(%rsp), %xmm2
movss 0x34(%rsp), %xmm3
movss 0x30(%rsp), %xmm4
movss 0x2c(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x20(%rsp), %xmm7
movss 0x1c(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, 0x34(%rax)
movss 0x54(%rsp), %xmm0
movss 0x50(%rsp), %xmm1
movss 0x4c(%rsp), %xmm2
movss 0x44(%rsp), %xmm3
movss 0x40(%rsp), %xmm4
movss 0x3c(%rsp), %xmm5
movss 0x24(%rsp), %xmm6
movss 0x20(%rsp), %xmm7
movss 0x1c(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movd %xmm0, %ecx
xorl $0x80000000, %ecx       # imm = 0x80000000
movd %ecx, %xmm0
movss %xmm0, 0x38(%rax)
movss 0x54(%rsp), %xmm0
movss 0x50(%rsp), %xmm1
movss 0x4c(%rsp), %xmm2
movss 0x44(%rsp), %xmm3
movss 0x40(%rsp), %xmm4
movss 0x3c(%rsp), %xmm5
movss 0x34(%rsp), %xmm6
movss 0x30(%rsp), %xmm7
movss 0x2c(%rsp), %xmm8
movss %xmm8, (%rsp)
callq 0xc6c0
movq 0x10(%rsp), %rax
movss %xmm0, 0x3c(%rax)
addq $0x68, %rsp
retq
nopl (%rax,%rax)