// File: /workspace/github_c_makefile_star2_O0/AlexCharlton[P]Hyperscene/src/aabb-tree.c
// Function: updateExtents
static void updateExtents(AABBtree *tree){
    HPSvector *nodes = &tree->nodes;
    int nCurrentNodes = nodes->size;
    Point max = {-INFINITY, -INFINITY, -INFINITY};
    Point min = {INFINITY, INFINITY, INFINITY};
    int i;
    for (i = 0; i < nCurrentNodes; i++){
	Node *node = nodes->data[i];
	BoundingSphere *bs = node->boundingSphere;
	max.x = fmax(max.x, bs->x + bs->r);
	max.y = fmax(max.y, bs->y + bs->r);
	max.z = fmax(max.z, bs->z + bs->r);
	min.x = fmin(min.x, bs->x - bs->r);
	min.y = fmin(min.y, bs->y - bs->r);
	min.z = fmin(min.z, bs->z - bs->r);
    }
    for (i = 0; i < 27; i++){
	AABBtree *child = tree->children[i];
	if (child){
	    if (!child->extentsCorrect)
		updateExtents(child);
	    max.x = fmax(max.x, child->max.x);
	    max.y = fmax(max.y, child->max.y);
	    max.z = fmax(max.z, child->max.z);
	    min.x = fmin(min.x, child->min.x);
	    min.y = fmin(min.y, child->min.y);
	    min.z = fmin(min.z, child->min.z);
	}
    }
    tree->max = max;
    tree->min = min;
    setSplitLocation(tree);
    tree->extentsCorrect = true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x118, %rax            # imm = 0x118
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movl %eax, -0x14(%rbp)
movq 0x4744(%rip), %rax      # 0xf0e0
movq %rax, -0x20(%rbp)
movl 0x4742(%rip), %eax      # 0xf0e8
movl %eax, -0x18(%rbp)
movq 0x473c(%rip), %rax      # 0xf0ec
movq %rax, -0x2c(%rbp)
movl 0x473a(%rip), %eax      # 0xf0f4
movl %eax, -0x24(%rbp)
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0xab9e
movq -0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x40(%rbp), %rax
movss (%rax), %xmm0
movq -0x40(%rbp), %rax
addss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x40(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x40(%rbp), %rax
addss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x40(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x40(%rbp), %rax
addss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x40(%rbp), %rax
movss (%rax), %xmm0
movq -0x40(%rbp), %rax
subss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x40(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x40(%rbp), %rax
subss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x40(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x40(%rbp), %rax
subss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x24(%rbp)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xa9c4
movl $0x0, -0x30(%rbp)
cmpl $0x1b, -0x30(%rbp)
jge 0xad71
movq -0x8(%rbp), %rax
movslq -0x30(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0xad61
movq -0x48(%rbp), %rax
testb $0x1, 0x110(%rax)
jne 0xabe1
movq -0x48(%rbp), %rdi
callq 0xa970
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x48(%rbp), %rax
movss 0x104(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x48(%rbp), %rax
movss 0x108(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x48(%rbp), %rax
movss 0x10c(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
maxsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x48(%rbp), %rax
movss 0xf8(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x48(%rbp), %rax
movss 0xfc(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm3
movq -0x48(%rbp), %rax
movss 0x100(%rax), %xmm0
cvtss2sd %xmm0, %xmm2
movaps %xmm2, %xmm4
movaps %xmm3, %xmm0
cmpunordsd %xmm0, %xmm0
movaps %xmm0, %xmm1
pand %xmm4, %xmm1
minsd %xmm3, %xmm2
pandn %xmm2, %xmm0
por %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x24(%rbp)
jmp 0xad63
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xaba5
movq -0x8(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, 0x104(%rax)
movl -0x18(%rbp), %ecx
movl %ecx, 0x10c(%rax)
movq -0x8(%rbp), %rax
movq -0x2c(%rbp), %rcx
movq %rcx, 0xf8(%rax)
movl -0x24(%rbp), %ecx
movl %ecx, 0x100(%rax)
movq -0x8(%rbp), %rdi
callq 0xafa0
movq -0x8(%rbp), %rax
movb $0x1, 0x110(%rax)
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)