RtlHashUnicodeString
NTSTATUS __stdcall RtlHashUnicodeString(
const _UNICODE_STRING *String,
UINT8 CaseInSensitive,
UINT64 HashAlgorithm,
UINT64 *HashValue){
int v4;
wchar_t *Buffer;
int v7;
unsigned __int64 v8;
int v10;
v4 = 0;
if( !String )
return -1073741811;
if( !HashValue )
return -1073741811;
Buffer = String->Buffer;
*(_DWORD *)HashValue = 0;
v7 = String->Length >> 1;
if( (unsigned int)HashAlgorithm > 1 )
return -1073741811;
if( v7 )
{
if( CaseInSensitive )
{
do
{
v8 = *Buffer++;
--v7;
if( (unsigned int)v8 >= 0x61 )
{
if( (unsigned int)v8 > 0x7A )
{
if( Nls844UnicodeUpcaseTable )
{
if( (unsigned __int16)v8 >= 0xC0u )
LOWORD(v8) = *(_WORD *)(Nls844UnicodeUpcaseTable
+ 2
* ((v8 & 0xF)
+ *(unsigned __int16 *)(Nls844UnicodeUpcaseTable
+ 2i64
* (((unsigned __int8)v8 >> 4)
+ (unsigned int)*(unsigned __int16 *)(Nls844UnicodeUpcaseTable
+ 2 * (v8 >> 8))))))
+ v8;
}
}
else
{
LOWORD(v8) = v8 - 32;
}
}
v4 = (unsigned __int16)v8 + 65599 * v4;
}
while( v7 );
}
else
{
do
{
v10 = *Buffer++;
v4 = v10 + 65599 * v4;
--v7;
}
while( v7 );
}
}
*(_DWORD *)HashValue = v4;
return 0;
}Referenced by:
KsepCacheDeviceHash
KsepCacheHwIdHash
PiCreateDriverSwDeviceCallback
PiDevCfgBuildDriverNodeStrongName
PiDevCfgResolveVariable
PiDmInitializeComparisonObject
PiDmObjectCreate
PiUEventHashStringIntoBucket
PipFindDeviceOverrideEntry
PipInitDeviceOverrideCache
PnpGenerateDeviceIdsHash
PopFxInitializeSocSubsystemStaticInfo
PopPluginQuerySocSubsystemBlockingTime
PopPluginQuerySocSubsystemMetadata
SepGetCachedHandlesEntry