RtlSuffixUnicodeString
UINT8 __stdcall RtlSuffixUnicodeString(
const _UNICODE_STRING *String1,
const _UNICODE_STRING *String2,
UINT8 CaseInSensitive){
unsigned __int64 Length;
wchar_t *Buffer;
wchar_t *v5;
wchar_t *v6;
unsigned __int64 v7;
signed __int64 v8;
UINT16 *v9;
UINT16 v10;
__int64 v11;
unsigned __int64 v12;
__int16 v13;
signed __int64 v14;
Length = String1->Length;
if( String2->Length >= (unsigned __int16)Length )
{
Buffer = String1->Buffer;
v5 = &Buffer[Length >> 1];
if( Buffer >= v5 )
return 1;
v6 = String2->Buffer;
v7 = (String2->Length - (unsigned __int64)String1->Length) >> 1;
if( CaseInSensitive )
{
v8 = (char *)&v6[v7] - (char *)Buffer;
while( 1 )
{
NLS_UPCASE(*(wchar_t *)((char *)Buffer + v8));
v10 = NLS_UPCASE(*v9);
if( v10 != v13 )
break;
Buffer = (wchar_t *)(v11 + 2);
if( (unsigned __int64)Buffer >= v12 )
return 1;
}
}
else
{
v14 = (char *)&v6[v7] - (char *)Buffer;
while( *Buffer == *(wchar_t *)((char *)Buffer + v14) )
{
if( ++Buffer >= v5 )
return 1;
}
}
}
return 0;
}Referenced by:
PiDrvDbSetupNodeHive