// File: ADAPTLab[P]MuDBSCAN/MuC_RTree.cpp
// Function: isCorrectGRTree(GhdrNd*)
void isCorrectGRTree(GHdrNd hdrNdTree)
{
    // fprintf(stderr, "Checking correctness\n");
    GLstNd 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)
		                // {
		                //     fprintf(stderr, "WRONG!!!\n");
		                //     for(iCnt=0;iCnt<DIMENSION;iCnt++)
		                //     {
		                //         fprintf(stderr, "%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]);
		                //     	exit(-1);
		                //     }
		                // }
                		temp=temp->ptrNextNd;
            		break;

            		case EXTNODE:
            			flag=0;
		                for(iCnt=0;iCnt<DIMENSION;iCnt++)
		                {
		                    if(groupList->groupItems[temp->tnInfo->tdInfo->groupElem]->bcell->minOriginalBoundary[iCnt] < lstNdTemp->tnInfo->tdInfo->rgnRect->iBottomLeft[iCnt])
		                        flag=1;
		                }
		                for(iCnt=0;iCnt<DIMENSION;iCnt++)
		                {
		                    if(groupList->groupItems[temp->tnInfo->tdInfo->groupElem]->bcell->maxOriginalBoundary[iCnt]>lstNdTemp->tnInfo->tdInfo->rgnRect->iTopRight[iCnt])
		                        flag=1;
		                }
		                // if(flag==1)
		                // {
		                //     fprintf(stderr, "WRONG!!!\n");
		                //     for(iCnt=0;iCnt<DIMENSION;iCnt++)
		                //     {
		                //         fprintf(stderr, "%lf %lf %lf %lf\n",groupList->groupItems[temp->tnInfo->tdInfo->groupElem]->bcell->minOriginalBoundary[iCnt],groupList->groupItems[temp->tnInfo->tdInfo->groupElem]->bcell->maxOriginalBoundary[iCnt], lstNdTemp->tnInfo->tdInfo->rgnRect->iBottomLeft[iCnt],lstNdTemp->tnInfo->tdInfo->rgnRect->iTopRight[iCnt]);
		                //     	exit(-1);
		                //     }
		                // }
                		temp=temp->ptrNextNd;
            		break;
            	}
                
            }
            isCorrectGRTree(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 0x18afa
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpl $0x0, (%rax)
jne 0x18ae9
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x18adc
movq -0x18(%rbp), %rax
movq (%rax), %rax
movl (%rax), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x188f8
jmp 0x188e7
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x189d4
jmp 0x18ad7
movl $0x0, -0x20(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0x1fec4(%rip), %rcx     # 0x387d4
cmpl (%rcx), %eax
jge 0x18962
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 0x18955
movl $0x1, -0x20(%rbp)
jmp 0x18957
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x18906
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0x1fe61(%rip), %rcx     # 0x387d4
cmpl (%rcx), %eax
jge 0x189c3
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 0x189b6
movl $0x1, -0x20(%rbp)
jmp 0x189b8
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x18969
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x18ad7
movl $0x0, -0x20(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0x1fde8(%rip), %rcx     # 0x387d4
cmpl (%rcx), %eax
jge 0x18a54
leaq 0x1fe19(%rip), %rax     # 0x38810
movq (%rax), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rcx
movq 0x8(%rcx), %rcx
movslq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x38(%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 0x18a47
movl $0x1, -0x20(%rbp)
jmp 0x18a49
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x189e2
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0x1fd6f(%rip), %rcx     # 0x387d4
cmpl (%rcx), %eax
jge 0x18acb
leaq 0x1fda0(%rip), %rax     # 0x38810
movq (%rax), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rcx
movq 0x8(%rcx), %rcx
movslq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x38(%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 0x18abe
movl $0x1, -0x20(%rbp)
jmp 0x18ac0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x18a5b
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x188ca
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x18880
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x1889f
addq $0x30, %rsp
popq %rbp
retq