CmpFindSecurityCellCacheIndex
char __fastcall CmpFindSecurityCellCacheIndex(__int64 a1, unsigned int a2, _DWORD *a3){
UINT64 v3;
char result;
__int64 v8;
UINT64 *v9;
UINT64 *LowerBoundInSortedArray;
unsigned __int64 v11;
UINT64 v12;
LODWORD(v12) = a2;
v3 = *(unsigned int *)(a1 + 1864);
if( (_DWORD)v3 )
{
v8 = *(int *)(a1 + 1872);
if( (int)v8 >= 0 && (unsigned int)v8 < (unsigned int)v3 && *(_DWORD *)(*(_QWORD *)(a1 + 1880) + 16 * v8) == a2 )
{
*a3 = v8;
return 1;
}
else
{
v9 = *(UINT64 **)(a1 + 1880);
LowerBoundInSortedArray = CmpFindLowerBoundInSortedArray(&v12, v9, v3);
v11 = (unsigned __int64)((char *)LowerBoundInSortedArray - (char *)v9) >> 4;
if( (unsigned int)v11 < (unsigned int)v3 && *(_DWORD *)LowerBoundInSortedArray == a2 )
{
*(_DWORD *)(a1 + 1872) = v11;
result = 1;
*a3 = v11;
}
else
{
*a3 = v11;
return 0;
}
}
}
else
{
*a3 = 0;
return 0;
}
return result;
}Referenced by:
CmpAddSecurityCellToCache
CmpAssignSecurityToKcb
CmpCheckKey
CmpCopyKeyPartial
CmpCreateKeyControlBlock
CmpRemoveFromSecurityCache
CmpSetSecurityDescriptorInfo
CmpSyncKeyValues
CmpValidateHiveSecurityDescriptors