RtlEqualUnicodeString
UINT8 __stdcall RtlEqualUnicodeString(UNICODE_STRING *String1, UNICODE_STRING *String2, UINT8 CaseInSensitive){
__int64 Length;
wchar_t *Buffer;
wchar_t *v6;
wchar_t *i;
signed __int64 v8;
unsigned __int64 v9;
unsigned __int64 v10;
Length = String1->Length;
if( (_DWORD)Length != String2->Length )
return 0;
Buffer = String1->Buffer;
v6 = String2->Buffer;
for( i = (wchar_t *)((char *)Buffer + Length); (unsigned int)Length >= 8; v6 += 4 )
{
if( *(_QWORD *)Buffer != *(_QWORD *)v6 )
break;
LODWORD(Length) = Length - 8;
if( !(_DWORD)Length )
return 1;
Buffer += 4;
}
if( Buffer < i )
{
if( CaseInSensitive )
{
v8 = (char *)v6 - (char *)Buffer;
while( 1 )
{
v9 = *Buffer;
v10 = *(wchar_t *)((char *)Buffer + v8);
if( (_WORD)v9 != (_WORD)v10 )
{
if( (unsigned int)v9 >= 0x61 )
{
if( (unsigned int)v9 > 0x7A )
{
if( Nls844UnicodeUpcaseTable && (unsigned __int16)v9 >= 0xC0u )
LOWORD(v9) = *(_WORD *)(Nls844UnicodeUpcaseTable
+ 2
* ((v9 & 0xF)
+ *(unsigned __int16 *)(Nls844UnicodeUpcaseTable
+ 2i64
* (((unsigned __int8)v9 >> 4)
+ (unsigned int)*(unsigned __int16 *)(Nls844UnicodeUpcaseTable
+ 2 * (v9 >> 8))))))
+ v9;
}
else
{
LOWORD(v9) = v9 - 32;
}
}
if( (unsigned int)v10 >= 0x61 )
{
if( (unsigned int)v10 > 0x7A )
{
if( Nls844UnicodeUpcaseTable )
{
if( (unsigned __int16)v10 >= 0xC0u )
LOWORD(v10) = *(_WORD *)(Nls844UnicodeUpcaseTable
+ 2
* ((v10 & 0xF)
+ *(unsigned __int16 *)(Nls844UnicodeUpcaseTable
+ 2i64
* (((unsigned __int8)v10 >> 4)
+ (unsigned int)*(unsigned __int16 *)(Nls844UnicodeUpcaseTable + 2 * (v10 >> 8))))))
+ v10;
}
}
else
{
LOWORD(v10) = v10 - 32;
}
}
if( (_WORD)v9 != (_WORD)v10 )
break;
}
if( ++Buffer >= i )
return 1;
}
}
else
{
while( *Buffer == *v6 )
{
++Buffer;
++v6;
if( Buffer >= i )
return 1;
}
}
return 0;
}
return 1;
}Referenced by:
AdtpBuildAccessesString
AdtpLookupDriveLetter
AuthzBasepCompareUnicodeStringOperands
AuthzBasepEqualUnicodeString
AuthzBasepFindSecurityAttribute
CmClassFilterCallback
CmDeviceClassesSubkeyCallback
CmGetSystemDriverList
CmIsRootDevice
CmLoadAppKey
CmServiceFilterCallback
CmSetValueKey
CmpCreateHardwareProfiles
CmpDoSort
CmpFindHiveSubKey
CmpFindMachineHiveByMountPoint
CmpGetKnownHivePathNode
DrvDbFindDatabaseNode
EtwpAcquireLoggerContextByLoggerName
EtwpGetLoggerInfoFromContext
EtwpLookupLoggerIdByName
ExpFindArcName
IopCreateSecureDeviceClassSettings
IopDeviceInterfaceFilterCallback
IopGetDeviceInterfaces
IopIsReportedAlready
IopParseDevice
IopQueryRegistryKeySystemPath
KseHookQueryValueKey
KsepCacheDeviceQueryData
MiObtainSectionForDriver
MiResolveImageReferences
MiUseLargeDriverPage
ObpLookupDirectoryUsingHash
PiDevCfgCheckDeviceNeedsUpdate
PiDevCfgConfigureDevice
PiDevCfgFindDeviceDriver
PiDevCfgLogDeviceConfigured
PiDevCfgQueryIncludedDriverConfigurations
PiDevCfgResolveMultiSzValue
PiDevCfgResolveVariable
PiDrvDbFindNode
PiDrvDbResolveFilePathKeyValues
PiDrvDbResolveSystemFilePath
PiFindDevInstMatch
PiPnpRtlServiceFilterCallback
PiRemoveDeferredSetInterfaceState
PiUEventQueueBroadcastEventEntry
PipAddRequestToEdge
PipDeleteBindingId
PipFindDeviceOverrideEntry
PipLookupGroupName
PipQueryBindingResolution
PnpCtxFindNode
PnpLoadBootFilterDriver
PnpMultiSzContainsString
PopBatteryDeviceState
PopEmModuleAddressMatchCallback
PopEmUpdateDeviceConstraintCallback
PopPlLookupDevicePowerProfile
PpInitGetGroupOrderIndex
RtlDeriveCapabilitySidsFromName
RtlpGetNtProductTypeFromRegistry
SLQueryLicenseValueInternal
SepFindMatchingCachedHandlesEntry
SepIsImageInMinTcbList
SepIsNgenImage
SepValidateReferencedCachedHandles
VfAddVerifierEntry
VfCheckUserHandle
VfDriverEnableVerifier
VfFilterAttach
VfInitBootDriversLoaded
VfSuspectDriversLoadCallback
VfSuspectDriversUnloadCallback
VfUtilIsProtectedDriver
ViDriverReApplyVerifierForAll
ViInitSystemPhase0
ViIsDriverSuspectForVerifier
ViLogAndLoadXdv
ViSuspectDriversLookupEntry
VrpCreateNamespaceNode
VrpFindDiffHiveEntryForMountPointWithLock
VrpHandleIoctlUnloadDifferencingHiveForHost
VrpPreLoadKey