HvpIsFreeNeighbor
CHAR __fastcall HvpIsFreeNeighbor(UINT64 P2, _DWORD *a2, INT64 *a3, INT64 **a4, INT64 a5){
INT64 *v6;
__int64 v8;
INT64 *v10;
HSTORAGE_TYPE v11;
v6 = (INT64 *)((char *)a3 + *(int *)a3);
*a4 = 0i64;
if( (unsigned int)((_DWORD)v6 - (_DWORD)a2) < a2[2] && *(int *)v6 > 0 )
{
v11 = (int)a5;
*a4 = v6;
goto LABEL_11;
}
v6 = (INT64 *)(a2 + 8);
if( a2 + 8 >= (_DWORD *)a3 )
return 0;
while( 1 )
{
v8 = *(int *)v6;
if( (int)v8 > 0 )
break;
v6 = (INT64 *)((char *)v6 - v8);
LABEL_6:
if( v6 >= a3 )
return 0;
}
v10 = (INT64 *)((char *)v6 + v8);
if( v10 != a3 )
{
v6 = v10;
goto LABEL_6;
}
v11 = (int)a5;
*a4 = v6;
if( (_DWORD)a5 != 1 && !HvpMarkCellDirty(P2, (unsigned int)((_DWORD)v6 + a2[1] - (_DWORD)a2), 1) )
return 0;
LABEL_11:
HvpDelistFreeCell((_HHIVE *)P2, (unsigned int)((_DWORD)v6 + (v11 << 31) + a2[1] - (_DWORD)a2), v11);
return 1;
}Referenced by:
HvFreeCell