LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmRotateQuatYPR
void hpmRotateQuatYPR(float yaw, float pitch, float roll, float *quat){
    float rot[4], r[4];
    hpmYPRQuatRotation(yaw, pitch, roll, rot);
    hpmQuatCross(rot, quat, r);
    hpmCopyQuat(r, quat);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x42b0
movq %rsp, %r15
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4130
movaps (%r15), %xmm0
movups %xmm0, (%rbx)
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmPrintMat4
void hpmPrintMat4(const float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    printf("[%f, %f, %f, %f,\n",   m->_11, m->_12, m->_13, m->_14);
    printf(" %f, %f, %f, %f,\n",   m->_21, m->_22, m->_23, m->_24);
    printf(" %f, %f, %f, %f,\n",   m->_31, m->_32, m->_33, m->_34);
    printf(" %f, %f, %f, %f]\n\n", m->_41, m->_42, m->_43, m->_44);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cvtss2sd (%rdi), %xmm0
cvtss2sd 0x10(%rdi), %xmm1
cvtss2sd 0x20(%rdi), %xmm2
cvtss2sd 0x30(%rdi), %xmm3
leaq 0x5d1a(%rip), %rdi      # 0xb070
movb $0x4, %al
callq 0x4150
xorps %xmm0, %xmm0
cvtss2sd 0x4(%rbx), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0x14(%rbx), %xmm1
xorps %xmm2, %xmm2
cvtss2sd 0x24(%rbx), %xmm2
xorps %xmm3, %xmm3
cvtss2sd 0x34(%rbx), %xmm3
leaq 0x5cfe(%rip), %r14      # 0xb082
movq %r14, %rdi
movb $0x4, %al
callq 0x4150
xorps %xmm0, %xmm0
cvtss2sd 0x8(%rbx), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0x18(%rbx), %xmm1
xorps %xmm2, %xmm2
cvtss2sd 0x28(%rbx), %xmm2
xorps %xmm3, %xmm3
cvtss2sd 0x38(%rbx), %xmm3
movq %r14, %rdi
movb $0x4, %al
callq 0x4150
xorps %xmm0, %xmm0
cvtss2sd 0xc(%rbx), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0x1c(%rbx), %xmm1
xorps %xmm2, %xmm2
cvtss2sd 0x2c(%rbx), %xmm2
xorps %xmm3, %xmm3
cvtss2sd 0x3c(%rbx), %xmm3
leaq 0x5cb5(%rip), %rdi      # 0xb094
movb $0x4, %al
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x4150
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmIdentityMat4
void hpmIdentityMat4(float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    memset(m, 0, sizeof(HPMmat4));
    m->_11 = 1.0;
    m->_22 = 1.0;
    m->_33 = 1.0;
    m->_44 = 1.0;
}

// Assembly:
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movups %xmm0, 0x10(%rdi)
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x30(%rdi)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, (%rdi)
movl %eax, 0x14(%rdi)
movl %eax, 0x28(%rdi)
movl %eax, 0x3c(%rdi)
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmTranslate
void hpmTranslate(float *vector, float *mat){
    float trans[16], r[16];
    hpmTranslation(vector, trans);
    hpmMultMat4(trans, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x88, %rsp
movq %rsi, %rbx
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rax
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movaps %xmm0, 0x30(%rax)
movl $0x3f800000, %ecx       # imm = 0x3F800000
movl %ecx, (%rax)
movl %ecx, 0x14(%rax)
movl %ecx, 0x28(%rax)
movl %ecx, 0x3c(%rax)
movss (%rdi), %xmm0
addss 0x30(%rax), %xmm0
movss %xmm0, 0x30(%rax)
movss 0x4(%rdi), %xmm0
addss 0x34(%rax), %xmm0
movss %xmm0, 0x34(%rax)
movss 0x8(%rdi), %xmm0
addss 0x38(%rax), %xmm0
movss %xmm0, 0x38(%rax)
movq %rsp, %r14
movq %rax, %rdi
movq %r14, %rdx
callq 0x4110
movaps (%r14), %xmm0
movaps 0x10(%r14), %xmm1
movaps 0x20(%r14), %xmm2
movaps 0x30(%r14), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x88, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmXRotation
void hpmXRotation(float rotation, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    initMat4(m);
    float c = cos(rotation);
    float s = sin(rotation);
    m->_11 = 1.0;
    m->_22 = c;
    m->_33 = c;
    m->_23 = -s;
    m->_32 = s;
    m->_44 = 1.0;
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
xorps %xmm1, %xmm1
movups %xmm1, 0x30(%rdi)
movups %xmm1, 0x20(%rdi)
movups %xmm1, 0x10(%rdi)
movups %xmm1, (%rdi)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, (%rbx)
movss 0x4(%rsp), %xmm1
movss %xmm1, 0x14(%rbx)
movss %xmm1, 0x28(%rbx)
movaps 0x56e5(%rip), %xmm1     # 0xb050
xorps %xmm0, %xmm1
movss %xmm1, 0x24(%rbx)
movss %xmm0, 0x18(%rbx)
movl %eax, 0x3c(%rbx)
addq $0x10, %rsp
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmRotateX
void hpmRotateX(float rotation, float *mat){
    if (rotation == 0.0) return;
    float rot[16], r[16];
    hpmXRotation(rotation, rot);
    hpmMultMat4(rot, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x598c
jp 0x598c
retq
pushq %r15
pushq %r14
pushq %rbx
subq $0x90, %rsp
movq %rdi, %rbx
xorps %xmm1, %xmm1
leaq 0x50(%rsp), %r14
movaps %xmm1, (%r14)
movaps %xmm1, 0x10(%r14)
movaps %xmm1, 0x20(%r14)
movaps %xmm1, 0x30(%r14)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, (%r14)
movss 0x4(%rsp), %xmm1
movss %xmm1, 0x14(%r14)
movss %xmm1, 0x28(%r14)
movaps 0x5651(%rip), %xmm1     # 0xb050
xorps %xmm0, %xmm1
movss %xmm1, 0x24(%r14)
movss %xmm0, 0x18(%r14)
movl %eax, 0x3c(%r14)
leaq 0x10(%rsp), %r15
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4110
movaps (%r15), %xmm0
movaps 0x10(%r15), %xmm1
movaps 0x20(%r15), %xmm2
movaps 0x30(%r15), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmYRotation
void hpmYRotation(float rotation, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    initMat4(m);
    float c = cos(rotation);
    float s = sin(rotation);
    m->_11 = c;
    m->_22 = 1.0;
    m->_33 = c;
    m->_13 = s;
    m->_31 = -s;
    m->_44 = 1.0;
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
xorps %xmm1, %xmm1
movups %xmm1, 0x30(%rdi)
movups %xmm1, 0x20(%rdi)
movups %xmm1, 0x10(%rdi)
movups %xmm1, (%rdi)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movss 0x4(%rsp), %xmm1
movss %xmm1, (%rbx)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x14(%rbx)
movss %xmm1, 0x28(%rbx)
movss %xmm0, 0x20(%rbx)
xorps 0x5597(%rip), %xmm0     # 0xb050
movss %xmm0, 0x8(%rbx)
movl %eax, 0x3c(%rbx)
addq $0x10, %rsp
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmRotateY
void hpmRotateY(float rotation, float *mat){
    if (rotation == 0.0) return;
    float rot[16], r[16];
    hpmYRotation(rotation, rot);
    hpmMultMat4(rot, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x5ad2
jp 0x5ad2
retq
pushq %r15
pushq %r14
pushq %rbx
subq $0x90, %rsp
movq %rdi, %rbx
xorps %xmm1, %xmm1
leaq 0x50(%rsp), %r14
movaps %xmm1, (%r14)
movaps %xmm1, 0x10(%r14)
movaps %xmm1, 0x20(%r14)
movaps %xmm1, 0x30(%r14)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movss 0x4(%rsp), %xmm1
movss %xmm1, (%r14)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x14(%r14)
movss %xmm1, 0x28(%r14)
movss %xmm0, 0x20(%r14)
xorps 0x5505(%rip), %xmm0     # 0xb050
movss %xmm0, 0x8(%r14)
movl %eax, 0x3c(%r14)
leaq 0x10(%rsp), %r15
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4110
movaps (%r15), %xmm0
movaps 0x10(%r15), %xmm1
movaps 0x20(%r15), %xmm2
movaps 0x30(%r15), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmZRotation
void hpmZRotation(float rotation, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    initMat4(m);
    float c = cos(rotation);
    float s = sin(rotation);
    m->_11 = c;
    m->_22 = c;
    m->_12 = -s;
    m->_21 = s;
    m->_33 = 1.0;
    m->_44 = 1.0;
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
xorps %xmm1, %xmm1
movups %xmm1, 0x30(%rdi)
movups %xmm1, 0x20(%rdi)
movups %xmm1, 0x10(%rdi)
movups %xmm1, (%rdi)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movss 0x4(%rsp), %xmm1
movss %xmm1, (%rbx)
movss %xmm1, 0x14(%rbx)
movaps 0x5461(%rip), %xmm1     # 0xb050
xorps %xmm0, %xmm1
movss %xmm1, 0x10(%rbx)
movss %xmm0, 0x4(%rbx)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x28(%rbx)
movl %eax, 0x3c(%rbx)
addq $0x10, %rsp
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmRotateZ
void hpmRotateZ(float rotation, float *mat){
    if (rotation == 0.0) return;
    float rot[16], r[16];
    hpmZRotation(rotation, rot);
    hpmMultMat4(rot, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x5c18
jp 0x5c18
retq
pushq %r15
pushq %r14
pushq %rbx
subq $0x90, %rsp
movq %rdi, %rbx
xorps %xmm1, %xmm1
leaq 0x50(%rsp), %r14
movaps %xmm1, (%r14)
movaps %xmm1, 0x10(%r14)
movaps %xmm1, 0x20(%r14)
movaps %xmm1, 0x30(%r14)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movss 0x4(%rsp), %xmm1
movss %xmm1, (%r14)
movss %xmm1, 0x14(%r14)
movaps 0x53ce(%rip), %xmm1     # 0xb050
xorps %xmm0, %xmm1
movss %xmm1, 0x10(%r14)
movss %xmm0, 0x4(%r14)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x28(%r14)
movl %eax, 0x3c(%r14)
leaq 0x10(%rsp), %r15
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4110
movaps (%r15), %xmm0
movaps 0x10(%r15), %xmm1
movaps 0x20(%r15), %xmm2
movaps 0x30(%r15), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x90, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmAxisAngleRotation
void hpmAxisAngleRotation(float *axis, float angle, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    HPMpoint *a = (HPMpoint *) axis;
    initMat4(m);
    float c = cos(angle);
    float s = sin(angle);
    float C = 1 - c;
    float xx, xy, xz, yy, yz, zz, xs, ys, zs;
    hpmNormalize(axis);
    xx = a->x * a->x;
    xy = a->x * a->y;
    xz = a->x * a->z;
    yy = a->y * a->y;
    yz = a->y * a->z;
    zz = a->z * a->z;
    xs = a->x * s;
    ys = a->y * s;
    zs = a->z * s;
    
    m->_11 = xx*C + c;
    m->_12 = xy*C - zs;
    m->_13 = xz*C + ys;

    m->_21 = xy*C + zs;
    m->_22 = yy*C + c;
    m->_23 = yz*C - xs;

    m->_31 = xz*C - ys;
    m->_32 = yz*C + xs;
    m->_33 = zz*C + c;
    
    m->_44 = 1.0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movq %rdi, %r14
xorps %xmm1, %xmm1
movups %xmm1, 0x30(%rsi)
movups %xmm1, 0x20(%rsi)
movups %xmm1, 0x10(%rsi)
movups %xmm1, (%rsi)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x4210
cvtsd2ss %xmm0, %xmm9
movss 0x52ff(%rip), %xmm10    # 0xb030
subss 0x4(%rsp), %xmm10
movss (%r14), %xmm1
movss 0x4(%r14), %xmm0
mulss %xmm0, %xmm0
mulss %xmm1, %xmm1
addss %xmm0, %xmm1
movss 0x8(%r14), %xmm0
mulss %xmm0, %xmm0
addss %xmm1, %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jb 0x5d6b
sqrtss %xmm0, %xmm0
jmp 0x5d8c
movss %xmm10, 0x8(%rsp)
movss %xmm9, 0x14(%rsp)
callq 0x42a0
movss 0x14(%rsp), %xmm9
movss 0x8(%rsp), %xmm10
movss (%r14), %xmm1
movss 0x4(%r14), %xmm2
divss %xmm0, %xmm1
movss %xmm1, (%r14)
divss %xmm0, %xmm2
movss %xmm2, 0x4(%r14)
movss 0x8(%r14), %xmm5
divss %xmm0, %xmm5
movss %xmm5, 0x8(%r14)
movaps %xmm1, %xmm8
mulss %xmm1, %xmm8
movaps %xmm1, %xmm7
mulss %xmm2, %xmm7
movaps %xmm1, %xmm3
mulss %xmm5, %xmm3
movaps %xmm2, %xmm6
mulss %xmm2, %xmm6
movaps %xmm2, %xmm4
mulss %xmm5, %xmm4
movaps %xmm5, %xmm0
mulss %xmm5, %xmm0
mulss %xmm9, %xmm1
mulss %xmm9, %xmm2
mulss %xmm9, %xmm5
mulss %xmm10, %xmm8
movss 0x4(%rsp), %xmm9
addss %xmm9, %xmm8
movss %xmm8, (%rbx)
mulss %xmm10, %xmm7
movaps %xmm7, %xmm8
subss %xmm5, %xmm8
movss %xmm8, 0x10(%rbx)
mulss %xmm10, %xmm3
movaps %xmm3, %xmm8
addss %xmm2, %xmm8
movss %xmm8, 0x20(%rbx)
addss %xmm5, %xmm7
movss %xmm7, 0x4(%rbx)
mulss %xmm10, %xmm6
addss %xmm9, %xmm6
movss %xmm6, 0x14(%rbx)
mulss %xmm10, %xmm4
movaps %xmm4, %xmm5
subss %xmm1, %xmm5
movss %xmm5, 0x24(%rbx)
subss %xmm2, %xmm3
movss %xmm3, 0x8(%rbx)
addss %xmm1, %xmm4
movss %xmm4, 0x18(%rbx)
mulss %xmm10, %xmm0
addss %xmm9, %xmm0
movss %xmm0, 0x28(%rbx)
movl $0x3f800000, 0x3c(%rbx) # imm = 0x3F800000
addq $0x18, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmRotateAxisAngle
void hpmRotateAxisAngle(float *axis, float angle, float *mat){
    if (angle == 0.0) return;
    float rot[16], r[16];
    hpmAxisAngleRotation(axis, angle, rot);
    hpmMultMat4(rot, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x5e97
jp 0x5e97
retq
pushq %r15
pushq %r14
pushq %rbx
subq $0x80, %rsp
movq %rsi, %rbx
leaq 0x40(%rsp), %r14
movq %r14, %rsi
callq 0x43d0
movq %rsp, %r15
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4110
movaps (%r15), %xmm0
movaps 0x10(%r15), %xmm1
movaps 0x20(%r15), %xmm2
movaps 0x30(%r15), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x80, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/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:
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%rsi)
movups %xmm0, 0x20(%rsi)
movups %xmm0, 0x10(%rsi)
movups %xmm0, (%rsi)
movss (%rdi), %xmm1
movss 0x4(%rdi), %xmm2
movaps %xmm1, %xmm0
mulss %xmm1, %xmm0
movaps %xmm1, %xmm8
mulss %xmm2, %xmm8
movss 0x8(%rdi), %xmm7
movaps %xmm1, %xmm4
mulss %xmm7, %xmm4
movss 0xc(%rdi), %xmm6
mulss %xmm6, %xmm1
movaps %xmm2, %xmm3
mulss %xmm2, %xmm3
movaps %xmm2, %xmm5
mulss %xmm7, %xmm5
mulss %xmm6, %xmm2
movaps %xmm7, %xmm9
mulss %xmm7, %xmm9
mulss %xmm6, %xmm7
movaps %xmm3, %xmm6
addss %xmm9, %xmm6
cvtss2sd %xmm6, %xmm10
addsd %xmm10, %xmm10
movsd 0x50b4(%rip), %xmm6     # 0xb020
movapd %xmm6, %xmm11
subsd %xmm10, %xmm11
xorps %xmm10, %xmm10
cvtsd2ss %xmm11, %xmm10
movss %xmm10, (%rsi)
movaps %xmm8, %xmm10
subss %xmm7, %xmm10
addss %xmm10, %xmm10
movss %xmm10, 0x10(%rsi)
movaps %xmm4, %xmm10
addss %xmm2, %xmm10
addss %xmm10, %xmm10
movss %xmm10, 0x20(%rsi)
addss %xmm8, %xmm7
addss %xmm7, %xmm7
addss %xmm0, %xmm9
xorps %xmm8, %xmm8
cvtss2sd %xmm9, %xmm8
addsd %xmm8, %xmm8
movapd %xmm6, %xmm9
subsd %xmm8, %xmm9
xorps %xmm8, %xmm8
cvtsd2ss %xmm9, %xmm8
movss %xmm7, 0x4(%rsi)
movss %xmm8, 0x14(%rsi)
movaps %xmm5, %xmm7
subss %xmm1, %xmm7
addss %xmm7, %xmm7
movss %xmm7, 0x24(%rsi)
subss %xmm2, %xmm4
addss %xmm4, %xmm4
movss %xmm4, 0x8(%rsi)
addss %xmm1, %xmm5
addss %xmm5, %xmm5
movss %xmm5, 0x18(%rsi)
addss %xmm0, %xmm3
xorps %xmm0, %xmm0
cvtss2sd %xmm3, %xmm0
addsd %xmm0, %xmm0
subsd %xmm0, %xmm6
xorps %xmm0, %xmm0
cvtsd2ss %xmm6, %xmm0
movss %xmm0, 0x28(%rsi)
movl $0x3f800000, 0x3c(%rsi) # imm = 0x3F800000
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmRotateQuaternion
void hpmRotateQuaternion(float *quat, float *mat){
    float rot[16], r[16];
    hpmQuaternionRotation(quat, rot);
    hpmMultMat4(rot, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x80, %rsp
movq %rsi, %rbx
leaq 0x40(%rsp), %r14
movq %r14, %rsi
callq 0x4050
movq %rsp, %r15
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4110
movaps (%r15), %xmm0
movaps 0x10(%r15), %xmm1
movaps 0x20(%r15), %xmm2
movaps 0x30(%r15), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x80, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmYPRRotation
void hpmYPRRotation(float yaw, float pitch, float roll, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    initMat4(m);
    float sy, cy, sp, cp, sr, cr;
    sy = sin(yaw); cy = cos(yaw);
    sp = sin(pitch); cp = cos(pitch);
    sr = sin(roll); cr = cos(roll);

    m->_11 = sp*sy*sr + cy*cr;
    m->_12 = sp*sy*cr - cy*sr;
    m->_13 = cp*sy;

    m->_21 = cp*sr;
    m->_22 = cp*cr;
    m->_23 = -sp;

    m->_31 = sp*cy*sr - sy*cr;
    m->_32 = sp*cy*cr + sy*sr;
    m->_33 = cp*cy;

    m->_44 = 1.0;
}

// Assembly:
pushq %rbx
subq $0x40, %rsp
movq %rdi, %rbx
movss %xmm2, 0xc(%rsp)
movss %xmm1, 0x10(%rsp)
xorps %xmm1, %xmm1
movups %xmm1, 0x30(%rdi)
movups %xmm1, 0x20(%rdi)
movups %xmm1, 0x10(%rdi)
movups %xmm1, (%rdi)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x24(%rsp)
movsd 0x18(%rsp), %xmm0
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x18(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movsd 0x10(%rsp), %xmm0
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
cvtss2sd 0xc(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
callq 0x4210
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xc(%rsp)
movsd 0x28(%rsp), %xmm0
callq 0x4310
cvtsd2ss %xmm0, %xmm0
movss 0x24(%rsp), %xmm5
movaps %xmm5, %xmm1
movaps 0x30(%rsp), %xmm8
mulss %xmm8, %xmm1
movss 0x18(%rsp), %xmm4
movaps %xmm4, %xmm2
mulss %xmm0, %xmm2
movaps %xmm1, %xmm3
movss 0xc(%rsp), %xmm6
mulss %xmm6, %xmm3
addss %xmm2, %xmm3
movss %xmm3, (%rbx)
movaps %xmm4, %xmm2
mulss %xmm6, %xmm2
movaps %xmm6, %xmm7
mulss %xmm0, %xmm1
subss %xmm2, %xmm1
movss %xmm1, 0x10(%rbx)
movaps %xmm5, %xmm1
movss 0x10(%rsp), %xmm2
mulss %xmm2, %xmm1
movss %xmm1, 0x20(%rbx)
movaps %xmm2, %xmm1
mulss %xmm6, %xmm1
movss %xmm1, 0x4(%rbx)
movaps %xmm2, %xmm1
movaps %xmm2, %xmm6
mulss %xmm0, %xmm1
movss %xmm1, 0x14(%rbx)
movaps %xmm4, %xmm1
movaps %xmm8, %xmm2
mulss %xmm8, %xmm1
xorps 0x4e7d(%rip), %xmm2     # 0xb050
movss %xmm2, 0x24(%rbx)
movaps %xmm5, %xmm2
mulss %xmm0, %xmm2
movaps %xmm1, %xmm3
mulss %xmm7, %xmm3
subss %xmm2, %xmm3
movss %xmm3, 0x8(%rbx)
movaps %xmm5, %xmm2
mulss %xmm7, %xmm2
mulss %xmm0, %xmm1
addss %xmm2, %xmm1
movss %xmm1, 0x18(%rbx)
mulss %xmm6, %xmm4
movss %xmm4, 0x28(%rbx)
movl $0x3f800000, 0x3c(%rbx) # imm = 0x3F800000
addq $0x40, %rsp
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmRotateYPR
void hpmRotateYPR(float yaw, float pitch, float roll, float *mat){
    float rot[16], r[16];
    hpmYPRRotation(yaw, pitch, roll, rot);
    hpmMultMat4(rot, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x80, %rsp
movq %rdi, %rbx
leaq 0x40(%rsp), %r14
movq %r14, %rdi
callq 0x4140
movq %rsp, %r15
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x4110
movaps (%r15), %xmm0
movaps 0x10(%r15), %xmm1
movaps 0x20(%r15), %xmm2
movaps 0x30(%r15), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x80, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpm2DScaling
void hpm2DScaling(float scaleX, float scaleY, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    initMat4(m);
    m->_11 = scaleX;
    m->_22 = scaleY;
    m->_33 = 1.0;
    m->_44 = 1.0;
}

// Assembly:
xorps %xmm2, %xmm2
movups %xmm2, (%rdi)
movups %xmm2, 0x10(%rdi)
movups %xmm2, 0x20(%rdi)
movups %xmm2, 0x30(%rdi)
movss %xmm0, (%rdi)
movss %xmm1, 0x14(%rdi)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x28(%rdi)
movl %eax, 0x3c(%rdi)
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmScale2D
void hpmScale2D(float scaleX, float scaleY, float *mat){
    float scale[16], r[16];
    hpm2DScaling(scaleX, scaleY, scale);
    hpmMultMat4(scale, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
xorps %xmm2, %xmm2
leaq 0x40(%rsp), %rdi
movaps %xmm2, (%rdi)
movaps %xmm2, 0x10(%rdi)
movaps %xmm2, 0x20(%rdi)
movaps %xmm2, 0x30(%rdi)
movss %xmm0, (%rdi)
movss %xmm1, 0x14(%rdi)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x28(%rdi)
movl %eax, 0x3c(%rdi)
movq %rsp, %r14
movq %rbx, %rsi
movq %r14, %rdx
callq 0x4110
movaps (%r14), %xmm0
movaps 0x10(%r14), %xmm1
movaps 0x20(%r14), %xmm2
movaps 0x30(%r14), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x88, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmScale3D
void hpmScale3D(float scaleX, float scaleY, float scaleZ, float *mat){
    float scale[16], r[16];
    hpm3DScaling(scaleX, scaleY, scaleZ, scale);
    hpmMultMat4(scale, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
xorps %xmm3, %xmm3
leaq 0x40(%rsp), %rdi
movaps %xmm3, (%rdi)
movaps %xmm3, 0x10(%rdi)
movaps %xmm3, 0x20(%rdi)
movaps %xmm3, 0x30(%rdi)
movss %xmm0, (%rdi)
movss %xmm1, 0x14(%rdi)
movss %xmm2, 0x28(%rdi)
movl $0x3f800000, 0x3c(%rdi) # imm = 0x3F800000
movq %rsp, %r14
movq %rbx, %rsi
movq %r14, %rdx
callq 0x4110
movaps (%r14), %xmm0
movaps 0x10(%r14), %xmm1
movaps 0x20(%r14), %xmm2
movaps 0x30(%r14), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x88, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmScale
void hpmScale(float factor, float *mat){
    float scale[16], r[16];
    hpmScaling(factor, scale);
    hpmMultMat4(scale, mat, r);
    hpmCopyMat4(r, mat);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
xorps %xmm1, %xmm1
leaq 0x40(%rsp), %rdi
movaps %xmm1, (%rdi)
movaps %xmm1, 0x10(%rdi)
movaps %xmm1, 0x20(%rdi)
movaps %xmm1, 0x30(%rdi)
movss %xmm0, (%rdi)
movss %xmm0, 0x14(%rdi)
movss %xmm0, 0x28(%rdi)
movl $0x3f800000, 0x3c(%rdi) # imm = 0x3F800000
movq %rsp, %r14
movq %rbx, %rsi
movq %r14, %rdx
callq 0x4110
movaps (%r14), %xmm0
movaps 0x10(%r14), %xmm1
movaps 0x20(%r14), %xmm2
movaps 0x30(%r14), %xmm3
movups %xmm3, 0x30(%rbx)
movups %xmm2, 0x20(%rbx)
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x88, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmTranslateRotateScale2D
void hpmTranslateRotateScale2D(float *point, float angle, float scale, float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    HPMpoint *p = (HPMpoint *) point;
    initMat4(m);
    float c = scale * cos(angle);
    float s = scale * sin(angle);
    m->_11 = c;
    m->_22 = c;
    m->_12 = -s;
    m->_21 = s;
    m->_33 = 1.0;
    m->_44 = 1.0;
    m->_14 = p->x;
    m->_24 = p->y;
    m->_34 = p->z;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movq %rdi, %r14
xorps %xmm2, %xmm2
movups %xmm2, 0x30(%rsi)
movups %xmm2, 0x20(%rsi)
movups %xmm2, 0x10(%rsi)
movups %xmm2, (%rsi)
cvtss2sd %xmm1, %xmm1
movsd %xmm1, 0x8(%rsp)
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x10(%rsp)
callq 0x4310
mulsd 0x8(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x4(%rsp)
movsd 0x10(%rsp), %xmm0
callq 0x4210
mulsd 0x8(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss 0x4(%rsp), %xmm1
movss %xmm1, (%rbx)
movss %xmm1, 0x14(%rbx)
movaps 0x4b62(%rip), %xmm1     # 0xb050
xorps %xmm0, %xmm1
movss %xmm1, 0x10(%rbx)
movss %xmm0, 0x4(%rbx)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x28(%rbx)
movl %eax, 0x3c(%rbx)
movss (%r14), %xmm0
movss %xmm0, 0x30(%rbx)
movss 0x4(%r14), %xmm0
movss %xmm0, 0x34(%rbx)
movss 0x8(%r14), %xmm0
movss %xmm0, 0x38(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmTranspose
void hpmTranspose(const float *mat, float *result){
    HPMmat4 *m = (HPMmat4 *) mat;
    HPMmat4 *r = (HPMmat4 *) result;
    r->_11 = m->_11;
    r->_12 = m->_21;
    r->_13 = m->_31;
    r->_14 = m->_41;

    r->_21 = m->_12;
    r->_22 = m->_22;
    r->_23 = m->_32;
    r->_24 = m->_42;

    r->_31 = m->_13;
    r->_32 = m->_23;
    r->_33 = m->_33;
    r->_34 = m->_43;

    r->_41 = m->_14;
    r->_42 = m->_24;
    r->_43 = m->_34;
    r->_44 = m->_44;
}

// Assembly:
movss (%rdi), %xmm0
movss %xmm0, (%rsi)
movss 0x4(%rdi), %xmm0
movss %xmm0, 0x10(%rsi)
movss 0x8(%rdi), %xmm0
movss %xmm0, 0x20(%rsi)
movss 0xc(%rdi), %xmm0
movss %xmm0, 0x30(%rsi)
movss 0x10(%rdi), %xmm0
movss %xmm0, 0x4(%rsi)
movss 0x14(%rdi), %xmm0
movss %xmm0, 0x14(%rsi)
movss 0x18(%rdi), %xmm0
movss %xmm0, 0x24(%rsi)
movss 0x1c(%rdi), %xmm0
movss %xmm0, 0x34(%rsi)
movss 0x20(%rdi), %xmm0
movss %xmm0, 0x8(%rsi)
movss 0x24(%rdi), %xmm0
movss %xmm0, 0x18(%rsi)
movss 0x28(%rdi), %xmm0
movss %xmm0, 0x28(%rsi)
movss 0x2c(%rdi), %xmm0
movss %xmm0, 0x38(%rsi)
movss 0x30(%rdi), %xmm0
movss %xmm0, 0xc(%rsi)
movss 0x34(%rdi), %xmm0
movss %xmm0, 0x1c(%rsi)
movss 0x38(%rdi), %xmm0
movss %xmm0, 0x2c(%rsi)
movss 0x3c(%rdi), %xmm0
movss %xmm0, 0x3c(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmFastInverseTranspose
void hpmFastInverseTranspose(const float *mat, float *result){
    HPMmat4 *m = (HPMmat4 *) mat;
    HPMmat4 *r = (HPMmat4 *) result;
    // Rotation component
    r->_11 = m->_11;
    r->_12 = m->_12;
    r->_13 = m->_13;

    r->_21 = m->_21;
    r->_22 = m->_22;
    r->_23 = m->_23;

    r->_31 = m->_31;
    r->_32 = m->_32;
    r->_33 = m->_33;
    // Translation component
    r->_41 = -(m->_11*m->_14 + m->_21*m->_24 + m->_31*m->_34);
    r->_42 = -(m->_12*m->_14 + m->_22*m->_24 + m->_32*m->_34);
    r->_43 = -(m->_13*m->_14 + m->_23*m->_24 + m->_33*m->_34);
    // Last column
    r->_14 = 0;
    r->_24 = 0;
    r->_34 = 0;
    r->_44 = 1;
}

// Assembly:
movss (%rdi), %xmm0
movss %xmm0, (%rsi)
movss 0x10(%rdi), %xmm0
movss %xmm0, 0x10(%rsi)
movss 0x20(%rdi), %xmm0
movss %xmm0, 0x20(%rsi)
movss 0x4(%rdi), %xmm0
movss %xmm0, 0x4(%rsi)
movss 0x14(%rdi), %xmm0
movss %xmm0, 0x14(%rsi)
movss 0x24(%rdi), %xmm0
movss %xmm0, 0x24(%rsi)
movss 0x8(%rdi), %xmm0
movss %xmm0, 0x8(%rsi)
movss 0x18(%rdi), %xmm0
movss %xmm0, 0x18(%rsi)
movss 0x28(%rdi), %xmm0
movss %xmm0, 0x28(%rsi)
movss 0x30(%rdi), %xmm0
movss 0x34(%rdi), %xmm1
movss 0x4(%rdi), %xmm2
mulss %xmm1, %xmm2
movss (%rdi), %xmm3
mulss %xmm0, %xmm3
addss %xmm2, %xmm3
movss 0x38(%rdi), %xmm2
movss 0x8(%rdi), %xmm4
mulss %xmm2, %xmm4
addss %xmm3, %xmm4
movaps 0x4002(%rip), %xmm3     # 0xb050
xorps %xmm3, %xmm4
movss %xmm4, 0xc(%rsi)
movss 0x14(%rdi), %xmm4
mulss %xmm1, %xmm4
movss 0x10(%rdi), %xmm5
mulss %xmm0, %xmm5
addss %xmm4, %xmm5
movss 0x18(%rdi), %xmm4
mulss %xmm2, %xmm4
addss %xmm5, %xmm4
xorps %xmm3, %xmm4
movss %xmm4, 0x1c(%rsi)
mulss 0x24(%rdi), %xmm1
mulss 0x20(%rdi), %xmm0
addss %xmm1, %xmm0
mulss 0x28(%rdi), %xmm2
addss %xmm0, %xmm2
xorps %xmm3, %xmm2
movss %xmm2, 0x2c(%rsi)
movaps 0x3fb9(%rip), %xmm0     # 0xb060
movups %xmm0, 0x30(%rsi)
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmOrthoViewport
void hpmOrthoViewport(float left, float right, float bottom, float top,
                      float near, float far,
                      float vLeft, float vRight, float vBottom, float vTop,
                      float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    initMat4(m);
    m->_11 = (vRight - vLeft) / (right - left);
    m->_14 = (right*vLeft - vRight*left) / (right - left);
    m->_22 = (vTop - vBottom) / (top - bottom);
    m->_24 = (top*vBottom - vTop*bottom) / (top - bottom);
    m->_33 = -2 / (far - near);
    m->_34 = -(far + near) / (far - near);
    m->_44 = 1.0;
}

// Assembly:
movss 0x8(%rsp), %xmm9
movss 0x10(%rsp), %xmm8
xorps %xmm10, %xmm10
movups %xmm10, (%rdi)
movups %xmm10, 0x30(%rdi)
movups %xmm10, 0x10(%rdi)
movups %xmm10, 0x20(%rdi)
movaps %xmm7, %xmm10
subss %xmm6, %xmm10
movaps %xmm1, %xmm11
subss %xmm0, %xmm11
divss %xmm11, %xmm10
movss %xmm10, (%rdi)
mulss %xmm0, %xmm7
mulss %xmm6, %xmm1
subss %xmm7, %xmm1
divss %xmm11, %xmm1
movss %xmm1, 0x30(%rdi)
movaps %xmm8, %xmm0
subss %xmm9, %xmm0
movaps %xmm3, %xmm1
subss %xmm2, %xmm1
divss %xmm1, %xmm0
movss %xmm0, 0x14(%rdi)
mulss %xmm2, %xmm8
mulss %xmm9, %xmm3
subss %xmm8, %xmm3
divss %xmm1, %xmm3
movss %xmm3, 0x34(%rdi)
movaps %xmm5, %xmm0
subss %xmm4, %xmm0
movss 0x3ef5(%rip), %xmm1     # 0xb038
divss %xmm0, %xmm1
addss %xmm5, %xmm4
xorps 0x3efe(%rip), %xmm4     # 0xb050
movss %xmm1, 0x28(%rdi)
divss %xmm0, %xmm4
movss %xmm4, 0x38(%rdi)
movl $0x3f800000, 0x3c(%rdi) # imm = 0x3F800000
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmOrtho
void hpmOrtho(int width, int height, float near, float far, float *mat){
    float r = (float) width / 2;
    float l = -r;
    float t = (float) height / 2;
    float b = -t;
    hpmOrthoViewport(l, r, t, b, near, far, -1.0, 1.0, 1.0, -1.0, mat);
}

// Assembly:
cvtsi2ss %edi, %xmm4
cvtsi2ss %esi, %xmm3
movss 0x3ec4(%rip), %xmm2     # 0xb03c
mulss %xmm2, %xmm4
mulss %xmm2, %xmm3
movaps 0x3ec9(%rip), %xmm2     # 0xb050
movaps %xmm3, %xmm5
xorps %xmm2, %xmm5
xorps %xmm6, %xmm6
movups %xmm6, (%rdx)
movups %xmm6, 0x30(%rdx)
movups %xmm6, 0x10(%rdx)
movups %xmm6, 0x20(%rdx)
movaps %xmm4, %xmm6
addss %xmm4, %xmm6
movss 0x3e92(%rip), %xmm7     # 0xb040
divss %xmm6, %xmm7
movss %xmm7, (%rdx)
subss %xmm4, %xmm4
divss %xmm6, %xmm4
movss %xmm4, 0x30(%rdx)
subss %xmm3, %xmm5
movss 0x3e69(%rip), %xmm4     # 0xb038
movaps %xmm4, %xmm6
divss %xmm5, %xmm6
movss %xmm6, 0x14(%rdx)
subss %xmm3, %xmm3
divss %xmm5, %xmm3
movss %xmm3, 0x34(%rdx)
movaps %xmm1, %xmm3
subss %xmm0, %xmm3
divss %xmm3, %xmm4
movss %xmm4, 0x28(%rdx)
addss %xmm1, %xmm0
xorps %xmm2, %xmm0
divss %xmm3, %xmm0
movss %xmm0, 0x38(%rdx)
movl $0x3f800000, 0x3c(%rdx) # imm = 0x3F800000
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmFrustumViewport
void hpmFrustumViewport(float left, float right, float bottom, float top,
                        float near, float far,
                        float vLeft, float vRight, float vBottom, float vTop,
                        float *mat){
    HPMmat4 *m = (HPMmat4 *) mat;
    initMat4(m);
    m->_11 = near * (vRight - vLeft) / (right - left);
    m->_13 = (vRight*left - right*vLeft) / (right - left);
    m->_22 = near * (vTop - vBottom) / (top - bottom);
    m->_23 = (vTop*bottom - top*vBottom) / (top - bottom);
    m->_33 = -(far + near) / (far - near);
    m->_34 = - (2.0 * far * near) / (far - near);
    m->_43 = -1.0;
}

// Assembly:
movss 0x8(%rsp), %xmm9
movss 0x10(%rsp), %xmm8
xorps %xmm10, %xmm10
movups %xmm10, (%rdi)
movups %xmm10, 0x20(%rdi)
movups %xmm10, 0x10(%rdi)
movups %xmm10, 0x30(%rdi)
movaps %xmm7, %xmm10
subss %xmm6, %xmm10
mulss %xmm4, %xmm10
movaps %xmm1, %xmm11
subss %xmm0, %xmm11
divss %xmm11, %xmm10
movss %xmm10, (%rdi)
mulss %xmm6, %xmm1
mulss %xmm0, %xmm7
subss %xmm1, %xmm7
divss %xmm11, %xmm7
movss %xmm7, 0x20(%rdi)
movaps %xmm8, %xmm0
subss %xmm9, %xmm0
mulss %xmm4, %xmm0
movaps %xmm3, %xmm1
subss %xmm2, %xmm1
divss %xmm1, %xmm0
movss %xmm0, 0x14(%rdi)
mulss %xmm9, %xmm3
mulss %xmm2, %xmm8
subss %xmm3, %xmm8
divss %xmm1, %xmm8
movss %xmm8, 0x24(%rdi)
movaps %xmm4, %xmm0
addss %xmm5, %xmm0
xorps 0x3d9f(%rip), %xmm0     # 0xb050
xorps %xmm1, %xmm1
cvtss2sd %xmm5, %xmm1
subss %xmm4, %xmm5
divss %xmm5, %xmm0
movss %xmm0, 0x28(%rdi)
mulsd 0x3d5b(%rip), %xmm1     # 0xb028
xorps %xmm0, %xmm0
cvtss2sd %xmm4, %xmm0
mulsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtss2sd %xmm5, %xmm0
divsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss %xmm0, 0x38(%rdi)
movl $0xbf800000, 0x2c(%rdi) # imm = 0xBF800000
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmPerspective
void hpmPerspective(int width, int height, float near, float far, float angle,
		    float *mat){
    float scale = tan(hpmDegreesToRadians(angle * 0.5)) * near;
    float r = ((float) width / (float) height) * scale;
    float l = -r;
    float t = scale;
    float b = -t;
    hpmFrustum(l, r, b, t, near, far, mat);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdx, %rbx
movss %xmm1, 0xc(%rsp)
movss %xmm0, 0x8(%rsp)
mulss 0x3d00(%rip), %xmm2     # 0xb03c
movl %esi, %ebp
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
mulsd 0x3cb3(%rip), %xmm0     # 0xb000
movl %edi, %r14d
cvtsd2ss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x42e0
movss 0x8(%rsp), %xmm4
xorps %xmm2, %xmm2
cvtss2sd %xmm4, %xmm2
xorps %xmm1, %xmm1
cvtsi2ss %r14d, %xmm1
mulsd %xmm0, %xmm2
xorps %xmm0, %xmm0
cvtsi2ss %ebp, %xmm0
cvtsd2ss %xmm2, %xmm3
divss %xmm0, %xmm1
mulss %xmm3, %xmm1
movaps 0x3cc0(%rip), %xmm2     # 0xb050
movaps %xmm1, %xmm0
xorps %xmm2, %xmm0
xorps %xmm3, %xmm2
movss 0x3ca3(%rip), %xmm6     # 0xb044
movss 0x3c87(%rip), %xmm7     # 0xb030
movss 0xc(%rsp), %xmm5
movq %rbx, %rdi
pushq $-0x40800000            # imm = 0xBF800000
pushq $0x3f800000             # imm = 0x3F800000
callq 0x4390
addq $0x20, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/hypermath/src/hypermath.c
// Function: hpmCameraInverse
void hpmCameraInverse(const float *camera, float *inverse){
    HPMmat4 *cam = (HPMmat4 *) camera;
    HPMmat4 *inv = (HPMmat4 *) inverse;
    // Rotation component
    inv->_11 = cam->_11;
    inv->_12 = cam->_21;
    inv->_13 = cam->_31;

    inv->_21 = cam->_12;
    inv->_22 = cam->_22;
    inv->_23 = cam->_32;

    inv->_31 = cam->_13;
    inv->_32 = cam->_23;
    inv->_33 = cam->_33;
    // Translation component
    inv->_14 = -(cam->_11*cam->_14 + cam->_21*cam->_24 + cam->_31*cam->_34);
    inv->_24 = -(cam->_12*cam->_14 + cam->_22*cam->_24 + cam->_32*cam->_34);
    inv->_34 = -(cam->_13*cam->_14 + cam->_23*cam->_24 + cam->_33*cam->_34);
    // Last row
    inv->_41 = 0;
    inv->_42 = 0;
    inv->_43 = 0;
    inv->_44 = 1;
}

// Assembly:
movss (%rdi), %xmm0
movss %xmm0, (%rsi)
movss 0x4(%rdi), %xmm0
movss %xmm0, 0x10(%rsi)
movss 0x8(%rdi), %xmm0
movss %xmm0, 0x20(%rsi)
movss 0x10(%rdi), %xmm2
movss %xmm2, 0x4(%rsi)
movss 0x14(%rdi), %xmm0
movss %xmm0, 0x14(%rsi)
movss 0x18(%rdi), %xmm0
movss %xmm0, 0x24(%rsi)
movss 0x20(%rdi), %xmm0
movss %xmm0, 0x8(%rsi)
movss 0x24(%rdi), %xmm1
movss %xmm1, 0x18(%rsi)
movss 0x28(%rdi), %xmm3
movss %xmm3, 0x28(%rsi)
movss (%rdi), %xmm4
movss 0x34(%rdi), %xmm5
movss 0x4(%rdi), %xmm3
mulss %xmm5, %xmm3
mulss 0x30(%rdi), %xmm4
addss %xmm3, %xmm4
movss 0x38(%rdi), %xmm3
movss 0x8(%rdi), %xmm6
mulss %xmm3, %xmm6
addss %xmm4, %xmm6
movaps 0x3993(%rip), %xmm4     # 0xb050
xorps %xmm4, %xmm6
movss %xmm6, 0x30(%rsi)
movss 0x30(%rdi), %xmm6
mulss 0x14(%rdi), %xmm5
mulss %xmm6, %xmm2
addss %xmm5, %xmm2
movss 0x18(%rdi), %xmm5
mulss %xmm3, %xmm5
addss %xmm2, %xmm5
xorps %xmm4, %xmm5
movss %xmm5, 0x34(%rsi)
mulss 0x34(%rdi), %xmm1
mulss %xmm6, %xmm0
addss %xmm1, %xmm0
mulss 0x28(%rdi), %xmm3
addss %xmm0, %xmm3
xorps %xmm4, %xmm3
movss %xmm3, 0x38(%rsi)
xorl %eax, %eax
movl %eax, 0xc(%rsi)
movl %eax, 0x1c(%rsi)
movl %eax, 0x2c(%rsi)
movl $0x3f800000, 0x3c(%rsi) # imm = 0x3F800000
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/vector.c
// Function: hpsInitVector
void hpsInitVector(HPSvector *vector, size_t initialCapacity){
    if (initialCapacity > 0){
	vector->data = malloc(initialCapacity * sizeof(void *));
    } else {
	vector->data = NULL;
    }
    vector->capacity = initialCapacity;
    vector->isStatic = false;
    vector->size = 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
testq %rsi, %rsi
je 0x773e
leaq (,%r14,8), %rdi
callq 0x4260
jmp 0x7740
xorl %eax, %eax
movq %rax, (%rbx)
movq %r14, 0x10(%rbx)
movb $0x0, 0x18(%rbx)
movq $0x0, 0x8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/vector.c
// Function: hpsInitStaticVector
void hpsInitStaticVector(HPSvector *vector, void *data, size_t capacity){
    vector->data = data;
    vector->capacity = capacity;
    vector->isStatic = true;
    vector->size = 0;
}

// Assembly:
movq %rsi, (%rdi)
movq %rdx, 0x10(%rdi)
movb $0x1, 0x18(%rdi)
movq $0x0, 0x8(%rdi)
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/vector.c
// Function: hpsPush
void hpsPush(HPSvector *vector, void *value){
    if (vector->size == vector->capacity){
	if (vector->isStatic){
	    void * new = malloc(2 * vector->capacity * sizeof(void *));
	    memcpy(new, vector->data,
		   sizeof(void*) * vector->capacity);
	    vector->data = new;
	    vector->capacity *= 2;
	    vector->isStatic = false;
	} else if (vector->capacity != 0){
	    vector->data = realloc(vector->data,
				   2 * vector->capacity * sizeof(void *));
	    vector->capacity *= 2;
	} else {
	    vector->data = malloc(DEFAULT_VECTOR_SIZE * sizeof(void *));
	    vector->capacity = DEFAULT_VECTOR_SIZE;
	}

    }
    vector->data[vector->size++] = value;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0x10(%rdi), %r15
cmpq %r15, 0x8(%rdi)
jne 0x784b
cmpb $0x1, 0x18(%r14)
jne 0x7819
movq %r15, %rdi
shlq $0x4, %rdi
callq 0x4260
movq %rax, %r12
movq (%r14), %rsi
leaq (,%r15,8), %rdx
movq %rax, %rdi
callq 0x4220
movq %r12, (%r14)
addq %r15, %r15
movq %r15, 0x10(%r14)
movb $0x0, 0x18(%r14)
jmp 0x784b
testq %r15, %r15
je 0x7836
movq (%r14), %rdi
shlq $0x4, %r15
movq %r15, %rsi
callq 0x42f0
movq %rax, (%r14)
shlq 0x10(%r14)
jmp 0x784b
movl $0x20, %edi
callq 0x4260
movq %rax, (%r14)
movq $0x4, 0x10(%r14)
movq (%r14), %rax
movq 0x8(%r14), %rcx
leaq 0x1(%rcx), %rdx
movq %rdx, 0x8(%r14)
movq %rbx, (%rax,%rcx,8)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/vector.c
// Function: hpsRemove
bool hpsRemove(HPSvector *vector, void *el){
    int i;
    for (i = 0; i < vector->size; i++){
	if (vector->data[i] == el){
	    hpsRemoveNth(vector, i);
	    return true;
	}
    }
    return false;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq 0x8(%rdi), %rdx
testq %rdx, %rdx
setne %bpl
je 0x7917
movq %rdi, %rbx
movq (%rdi), %rax
cmpq %rsi, (%rax)
je 0x78e9
leaq -0x1(%rdx), %rdi
xorl %r8d, %r8d
cmpq %r8, %rdi
je 0x7915
leaq 0x1(%r8), %rcx
cmpq %rsi, 0x8(%rax,%r8,8)
movq %rcx, %r8
jne 0x78cd
cmpq %rcx, %rdx
seta %bpl
jmp 0x78eb
xorl %ecx, %ecx
leaq -0x1(%rdx), %rsi
cmpq %rcx, %rsi
jb 0x790f
leaq (%rax,%rcx,8), %rdi
leaq (%rax,%rcx,8), %rsi
addq $0x8, %rsi
notq %rcx
addq %rcx, %rdx
shlq $0x3, %rdx
callq 0x4300
decq 0x8(%rbx)
jmp 0x7917
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/vector.c
// Function: hpsRemoveNth
bool hpsRemoveNth(HPSvector *vector, size_t index){
    if (vector->size == 0 || index >= vector->size) return false;
    if (index <= (vector->size - 1))
	memmove(&vector->data[index], &vector->data[index + 1],
                sizeof(void*) * (vector->size - index - 1));
    --vector->size;
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq 0x8(%rdi), %r15
cmpq %rsi, %r15
jbe 0x7962
movq %rdi, %r14
leaq -0x1(%r15), %rax
cmpq %rbx, %rax
jb 0x795e
movq (%r14), %rax
leaq (%rax,%rbx,8), %rdi
leaq (%rax,%rbx,8), %rsi
addq $0x8, %rsi
movq %rbx, %rdx
notq %rdx
addq %r15, %rdx
shlq $0x3, %rdx
callq 0x4300
decq 0x8(%r14)
cmpq %rbx, %r15
seta %al
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/pools.c
// Function: hpsInitPool
void hpsInitPool(HPSpool pool, void *data, size_t blockSize, size_t nBlocks, char name[32]){
    int i;
    char *poolStart = (char *) data;
    struct pool *p = (struct pool*) pool;
    p->blockSize = blockSize;
    p->nBlocks = nBlocks;
    p->nextPool = NULL;
    p->freeBlock = (void**) data;
    strcpy(p->name, name);
    for(i = 0; i < nBlocks - 1; i++){
	void **next = (void **) &poolStart[i * blockSize];
	*next = &poolStart[(i+1) * blockSize];
    }
    void **last = (void **) &poolStart[(nBlocks - 1) * blockSize];
    *last = NULL;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rcx, %rbx
movq %rdx, %r15
movq %rsi, %r14
movl %r15d, (%rdi)
movl %ebx, 0x4(%rdi)
movq $0x0, 0x10(%rdi)
movq %rsi, 0x8(%rdi)
addq $0x18, %rdi
movq %r8, %rsi
callq 0x4070
decq %rbx
je 0x79b6
movq %rbx, %rax
movq %r14, %rcx
leaq (%rcx,%r15), %rdx
movq %rdx, (%rcx)
movq %rdx, %rcx
decq %rax
jne 0x79a7
imulq %r15, %rbx
movq $0x0, (%r14,%rbx)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/pools.c
// Function: hpsMakePool
HPSpool hpsMakePool(size_t blockSize, size_t nBlocks, char name[32]){
    size_t size = (blockSize < sizeof(void *)) ? sizeof(void *) : blockSize;
    char *pool = (char *) malloc(size * nBlocks + sizeof(struct pool));
    char *poolStart = &pool[sizeof(struct pool)];
    hpsInitPool((struct pool*) pool, poolStart, size, nBlocks, name);
    return (void *) pool;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
cmpq $0x9, %rdi
movl $0x8, %r14d
cmovaeq %rdi, %r14
movq %rsi, %r15
movq %r14, %rdi
imulq %rsi, %rdi
addq $0x38, %rdi
callq 0x4260
movq %rax, %r12
leaq 0x38(%rax), %rsi
movq %rax, %rdi
movq %r14, %rdx
movq %r15, %rcx
movq %rbx, %r8
callq 0x4340
movq %r12, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/pools.c
// Function: hpsDeletePool
void hpsDeletePool(HPSpool pool){
    struct pool *data = (struct pool*) pool;
    if (data->nextPool)
	hpsDeletePool(data->nextPool);
    free(pool);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
testq %rdi, %rdi
je 0x7a2d
callq 0x4290
movq %rbx, %rdi
popq %rbx
jmp 0x4030
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/pools.c
// Function: hpsClearPool
void hpsClearPool(HPSpool pool){
    int i;
    struct pool *data = (struct pool*) pool;
    if (data->nextPool)
	hpsClearPool(data->nextPool);
    char *poolStart = &((char *) pool)[sizeof(struct pool)];
    const unsigned int size = data->blockSize;
    const unsigned int nBlocks = data->nBlocks;
    data->freeBlock = (void**) poolStart;
    for(i = 0; i < nBlocks - 1; i++){
	void **next = (void **) &poolStart[i * size];
	*next = &poolStart[(i+1) * size];
    }
    void **last = (void **) &poolStart[(nBlocks - 1) * size];
    *last = NULL;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x10(%rdi), %rdi
testq %rdi, %rdi
je 0x7a48
callq 0x4160
leaq 0x38(%rbx), %rax
movl (%rbx), %edx
movl 0x4(%rbx), %ecx
movq %rax, 0x8(%rbx)
decl %ecx
je 0x7a6f
movl %ecx, %esi
xorl %edi, %edi
movl %edi, %r8d
addl %edx, %edi
leaq (%rax,%rdi), %r9
movq %r9, (%rax,%r8)
decq %rsi
jne 0x7a5d
imull %edx, %ecx
movq $0x0, (%rax,%rcx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/pools.c
// Function: hpsAllocateFrom
void *hpsAllocateFrom(HPSpool pool){
#ifdef DEBUG
      if (!pool){
      fprintf(stderr, "Fatal: trying to allocate to a pool that doesn't exist!\n");
      exit(EXIT_FAILURE);
      }
#endif
    struct pool *data = (struct pool*) pool;
    void **block = data->freeBlock;
    if (!block){
	growPool(pool);
	block = data->freeBlock;
    }
    data->freeBlock = *block;
    return block;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq 0x8(%rdi), %rax
testq %rax, %rax
jne 0x7ae7
movq %rbx, %rdi
callq 0x7b04
movq %rax, %r14
movl (%rbx), %eax
cmpl $0x9, %eax
movl $0x8, %r15d
cmovael %eax, %r15d
movl 0x4(%rbx), %r12d
movq %r15, %rdi
imulq %r12, %rdi
addq $0x38, %rdi
callq 0x4260
movq %rax, %r13
leaq 0x38(%rax), %rsi
leaq 0x35d9(%rip), %r8       # 0xb0a6
movq %rax, %rdi
movq %r15, %rdx
movq %r12, %rcx
callq 0x4340
movq %r13, 0x10(%r14)
movq 0x8(%r13), %rax
movq %rax, 0x8(%rbx)
movq (%rax), %rcx
movq %rcx, 0x8(%rbx)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/aabb-tree.c
// Function: hpsAABBupdateNode
void hpsAABBupdateNode(Node *node){
    AABBtree *tree = (AABBtree *) node->area;
    AABBtree *t = tree;
    while (t->parent && !contains(t, node->boundingSphere)){
	t = t->parent;
    }
    t = hpsAABBfindNode(node, t);
    if (t != tree){
	hpsAABBremoveNode(node);
	addNode(node, t);
        growExtents(t, node->boundingSphere);
    } else {
	growExtents(t, node->boundingSphere);
	shrinkExtents(t, node->boundingSphere);
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %r12
movq (%r12), %rdx
movq %r12, %r14
testq %rdx, %rdx
je 0x7c72
movq (%rbx), %rax
movss (%rax), %xmm0
movss 0xc(%rax), %xmm1
movaps %xmm0, %xmm2
subss %xmm1, %xmm2
addss %xmm1, %xmm0
movq %r12, %rcx
movq %rcx, %r14
movq %rdx, %rcx
ucomiss 0xf8(%r14), %xmm2
jb 0x7c67
movss 0x4(%rax), %xmm3
movaps %xmm3, %xmm4
subss %xmm1, %xmm4
ucomiss 0xfc(%r14), %xmm4
jb 0x7c67
movss 0x8(%rax), %xmm4
movaps %xmm4, %xmm5
subss %xmm1, %xmm5
ucomiss 0x100(%r14), %xmm5
jb 0x7c67
movss 0x104(%r14), %xmm5
ucomiss %xmm0, %xmm5
jb 0x7c67
addss %xmm1, %xmm3
movss 0x108(%r14), %xmm5
ucomiss %xmm3, %xmm5
jb 0x7c67
addss %xmm1, %xmm4
movss 0x10c(%r14), %xmm3
ucomiss %xmm4, %xmm3
jae 0x7c72
movq (%rcx), %rdx
movq %rcx, %r14
testq %rdx, %rdx
jne 0x7bf9
movq %r14, %r15
movq (%rbx), %rsi
movq %r14, %rdi
callq 0x7d9b
movq %rax, %r14
cmpq %rax, %r15
jne 0x7c72
cmpq %r12, %r14
je 0x7cc1
movq %rbx, %rdi
callq 0x4120
movq %r14, %rdi
addq $0x118, %rdi            # imm = 0x118
movq %rbx, %rsi
callq 0x4270
movq %r14, 0x8(%rbx)
movq (%rbx), %rsi
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x7f66
movq (%rbx), %rsi
movq %r14, %rdi
callq 0x7f66
movq (%rbx), %rsi
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x80a9
// File: /workspace/github_c_makefile_star2_O1/AlexCharlton[P]Hyperscene/src/aabb-tree.c
// Function: hpsAABBfindNode
AABBtree *hpsAABBfindNode(Node *node, AABBtree *tree){
    AABBtree *t = tree;
    AABBtree *u = NULL;
    while (u != t){
	u = t;
	t = whichBranch(t, node->boundingSphere);
    }
    return t;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
testq %rsi, %rsi
je 0x7d90
movq %rdi, %r14
movq (%r14), %rsi
movq %rbx, %rdi
callq 0x7d9b
cmpq %rax, %rbx
movq %rax, %rbx
jne 0x7d7b
jmp 0x7d93
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq