RtlCompareString
NTSTATUS __stdcall RtlCompareString(const _STRING *String1, const _STRING *String2, UINT8 CaseInSensitive){
unsigned int Length;
unsigned int v4;
__int64 v5;
char *Buffer;
char *v7;
char *v8;
INT8 v9;
int v11;
int v12;
int v13;
signed __int64 v14;
Length = String1->Length;
v4 = String2->Length;
v5 = String1->Length;
Buffer = String1->Buffer;
v7 = String2->Buffer;
if( Length > v4 )
v5 = String2->Length;
v8 = &Buffer[v5];
if( Buffer >= v8 )
return Length - v4;
if( CaseInSensitive )
{
while( 1 )
{
v9 = *v7;
if( *Buffer != *v7 )
{
v11 = (unsigned __int8)RtlUpperChar(*Buffer);
LOBYTE(v12) = RtlUpperChar(v9);
if( (_BYTE)v11 != (_BYTE)v12 )
break;
}
++Buffer;
++v7;
if( Buffer >= v8 )
return Length - v4;
}
v12 = (unsigned __int8)v12;
v13 = v11;
}
else
{
v14 = v7 - Buffer;
while( 1 )
{
v13 = (unsigned __int8)*Buffer;
v12 = (unsigned __int8)Buffer[v14];
if( (_BYTE)v13 != (_BYTE)v12 )
break;
if( ++Buffer >= v8 )
return Length - v4;
}
}
return v13 - v12;
}Referenced by:
KsepGetModuleInfoByName