Browse Source

Utility: Optimized FindPattern inlining

pull/3235/head
Amrsatrio 2 years ago
parent
commit
52cd4f0072
  1. 12
      ExplorerPatcher/utility.c

12
ExplorerPatcher/utility.c

@ -1582,7 +1582,7 @@ HRESULT SHRegGetDWORD(HKEY hkey, const WCHAR* pwszSubKey, const WCHAR* pwszValue
} }
#ifdef _WIN64 #ifdef _WIN64
inline BOOL MaskCompare(PVOID pBuffer, LPCSTR lpPattern, LPCSTR lpMask) static BOOL MaskCompare(PVOID pBuffer, LPCSTR lpPattern, LPCSTR lpMask)
{ {
for (PBYTE value = (PBYTE)pBuffer; *lpMask; ++lpPattern, ++lpMask, ++value) for (PBYTE value = (PBYTE)pBuffer; *lpMask; ++lpPattern, ++lpMask, ++value)
{ {
@ -1593,10 +1593,8 @@ inline BOOL MaskCompare(PVOID pBuffer, LPCSTR lpPattern, LPCSTR lpMask)
return TRUE; return TRUE;
} }
PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask) static __declspec(noinline) PVOID FindPatternHelper(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask)
{ {
dwSize -= strlen(lpMask);
for (SIZE_T index = 0; index < dwSize; ++index) for (SIZE_T index = 0; index < dwSize; ++index)
{ {
PBYTE pAddress = (PBYTE)pBase + index; PBYTE pAddress = (PBYTE)pBase + index;
@ -1607,4 +1605,10 @@ PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask)
return NULL; return NULL;
} }
PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask)
{
dwSize -= strlen(lpMask);
return FindPatternHelper(pBase, dwSize, lpPattern, lpMask);
}
#endif #endif

Loading…
Cancel
Save