CmpFindKcbInHashEntryByCompressedName
__int64 __fastcall CmpFindKcbInHashEntryByCompressedName(
__int64 a1,
unsigned int a2,
__int64 a3,
unsigned __int8 *a4,
unsigned __int16 a5){
__int64 v7;
__int64 i;
__int64 v10;
unsigned __int16 v11;
int v12;
UNICODE_STRING SearchName;
SearchName = 0i64;
v7 = 0i64;
for( i = *(_QWORD *)(*(_QWORD *)(a1 + 1640)
+ 24
* ((unsigned int)(*(_DWORD *)(a1 + 1648) - 1) & ((101027 * (a2 ^ (a2 >> 9))) ^ ((unsigned __int64)(101027 * (a2 ^ (a2 >> 9))) >> 9)))
+ 16); i; i = *(_QWORD *)(i + 8) )
{
if( *(_DWORD *)i == a2 && *(_QWORD *)(i + 56) == a3 )
{
v10 = *(_QWORD *)(i + 64);
v11 = *(_WORD *)(v10 + 24);
if( (*(_DWORD *)v10 & 1) != 0 )
{
v12 = CmpCompareTwoCompressedNames((_WCHAR *)a4, a5, (_WCHAR *)(v10 + 26), *(unsigned __int16 *)(v10 + 24));
}
else
{
SearchName.Buffer = (wchar_t *)(v10 + 26);
SearchName.Length = v11;
SearchName.MaximumLength = v11;
v12 = CmpCompareCompressedName(&SearchName, (WCHAR *)a4, a5, 1ui64);
}
if( !v12 )
return i - 16;
}
}
return v7;
}Referenced by:
CmpPartialPromoteSubkeys
CmpSubtreeEnumeratorAdvance