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