// File: ADAPTLab[P]MuDBSCAN/RTree.cpp
// Function: isCorrectRTree(RhdrNd*)
void isCorrectRTree(RHdrNd hdrNdTree)
{
    RLstNd lstNdTemp = hdrNdTree->ptrFirstNd,temp;
    int iCnt = 0,flag;

    while(lstNdTemp != NULL)
    {   
        if(lstNdTemp->tnInfo->ndType == INTNODE)
        {   
            temp=lstNdTemp->ptrChildLst->ptrFirstNd;
            while(temp!=NULL)
            {
            	switch(temp->tnInfo->ndType)
            	{
            		case INTNODE:
            			flag=0;
		                for(iCnt=0;iCnt<DIMENSION;iCnt++)
		                {
		                    if(temp->tnInfo->tdInfo->rgnRect->iBottomLeft[iCnt]<lstNdTemp->tnInfo->tdInfo->rgnRect->iBottomLeft[iCnt])
		                        flag=1;
		                }
		                for(iCnt=0;iCnt<DIMENSION;iCnt++)
		                {
		                    if(temp->tnInfo->tdInfo->rgnRect->iTopRight[iCnt]>lstNdTemp->tnInfo->tdInfo->rgnRect->iTopRight[iCnt])
		                        flag=1;
		                }
		                if(flag==1)
		                {
		                    printf("WRONG!!!\n");
		                    for(iCnt=0;iCnt<DIMENSION;iCnt++)
		                    {
		                        printf("%lf %lf %lf %lf\n",temp->tnInfo->tdInfo->rgnRect->iBottomLeft[iCnt],temp->tnInfo->tdInfo->rgnRect->iTopRight[iCnt],lstNdTemp->tnInfo->tdInfo->rgnRect->iBottomLeft[iCnt],lstNdTemp->tnInfo->tdInfo->rgnRect->iTopRight[iCnt]);
		                    }
		                }
		                temp=temp->ptrNextNd;
            		break;

            		case EXTNODE:
            			return;
            		break;
            	}
                
            }
            isCorrectRTree(lstNdTemp->ptrChildLst);
        }
        lstNdTemp = lstNdTemp->ptrNextNd;
    }
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
movl $0x0, -0x1c(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x148af
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpl $0x0, (%rax)
jne 0x1489e
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x14891
movq -0x18(%rbp), %rax
movq (%rax), %rax
movl (%rax), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x146f8
jmp 0x146e7
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x1488a
jmp 0x1488c
movl $0x0, -0x20(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0x240c4(%rip), %rcx     # 0x387d4
cmpl (%rcx), %eax
jge 0x14762
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x14755
movl $0x1, -0x20(%rbp)
jmp 0x14757
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x14706
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0x24061(%rip), %rcx     # 0x387d4
cmpl (%rcx), %eax
jge 0x147c3
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movslq -0x1c(%rbp), %rcx
ucomisd (%rax,%rcx,8), %xmm0
jbe 0x147b6
movl $0x1, -0x20(%rbp)
jmp 0x147b8
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x14769
cmpl $0x1, -0x20(%rbp)
jne 0x1487c
leaq 0x17a3c(%rip), %rdi     # 0x2c210
movb $0x0, %al
callq 0x9040
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0x23fe8(%rip), %rcx     # 0x387d4
cmpl (%rcx), %eax
jge 0x1487a
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movslq -0x1c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm3
leaq 0x179b5(%rip), %rdi     # 0x2c21a
movb $0x4, %al
callq 0x9040
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x147e2
jmp 0x1487c
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x1488c
jmp 0x148b1
jmp 0x146ca
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x14680
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x1469f
jmp 0x148b1
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)