CmpCompareUnicodeString

NTSTATUS __stdcall CmpCompareUnicodeString(_UNICODE_STRING *SourceName, _UNICODE_STRING *DestName, UINT64 CompareFlags){
  char v3; 
  wchar_t *Buffer; 
  wchar_t *v5; 
  unsigned __int16 v6; 
  unsigned __int16 v7; 
  UINT16 v8; 
  UINT16 v9; 

  v3 = CompareFlags;
  Buffer = SourceName->Buffer;
  v5 = DestName->Buffer;
  v6 = DestName->Length >> 1;
  v7 = SourceName->Length >> 1;
  if( v7 )
  {
    while( v6 )
    {
      v8 = *Buffer++;
      v9 = *v5++;
      if( v8 != v9 )
      {
        if( (v3 & 1) == 0 && v8 >= 0x61u )
        {
          if( v8 > 0x7Au )
            v8 = NLS_UPCASE(v8);
          else
            v8 -= 32;
        }
        if( (v3 & 2) == 0 && v9 >= 0x61u )
        {
          if( v9 <= 0x7Au )
            v9 -= 32;
          else
            v9 = NLS_UPCASE(v9);
        }
        if( v8 != v9 )
          return v8 - v9;
      }
      --v6;
      if( !--v7 )
        return v7 - v6;
    }
  }
  return v7 - v6;
}

Referenced by:

CmpCompareKeysByName
CmpFindKcbInHashEntryByName
CmpGetMappingHiveForString
CmpGetSymbolicLinkTarget
CmpPerformSingleKcbCacheLookup