CmpCompareCompressedName
INT64 __stdcall CmpCompareCompressedName(
UNICODE_STRING *SearchName,
WCHAR *CompressedName,
UINT64 NameLength,
UINT64 CompareFlags){
char v4;
unsigned __int16 v5;
unsigned __int16 v6;
wchar_t *Buffer;
UINT16 v9;
unsigned int v10;
v4 = CompareFlags;
v5 = SearchName->Length >> 1;
v6 = NameLength;
Buffer = SearchName->Buffer;
if( v5 )
{
while( v6 )
{
v9 = *Buffer++;
v10 = *(unsigned __int8 *)CompressedName;
CompressedName = (WCHAR *)((char *)CompressedName + 1);
if( v9 != (_WORD)v10 )
{
if( (v4 & 1) == 0 && v9 >= 0x61u )
{
if( v9 > 0x7Au )
v9 = NLS_UPCASE(v9);
else
v9 -= 32;
}
if( (v4 & 2) == 0 && v10 >= 0x61 )
{
if( v10 > 0x7A )
LOWORD(v10) = NLS_UPCASE(v10);
else
LOWORD(v10) = v10 - 32;
}
if( v9 != (unsigned __int16)v10 )
return v9 - (unsigned int)(unsigned __int16)v10;
}
--v6;
if( !--v5 )
return v5 - (unsigned int)v6;
}
}
return v5 - (unsigned int)v6;
}Referenced by:
CmpCheckLexicographicalOrder
CmpCompareKeysByName
CmpDoCompareKeyName
CmpFindKcbInHashEntryByCompressedName
CmpFindKcbInHashEntryByName
CmpFindNameInListCellWithStatus
CmpGetNameControlBlock
CmpSortedValueEnumStackValueCompareFunction