From 52cd4f00727a5d773f26f0c509954253a1598918 Mon Sep 17 00:00:00 2001 From: Amrsatrio Date: Thu, 14 Mar 2024 05:07:15 +0700 Subject: [PATCH] Utility: Optimized FindPattern inlining --- ExplorerPatcher/utility.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ExplorerPatcher/utility.c b/ExplorerPatcher/utility.c index 08a7927..4189657 100644 --- a/ExplorerPatcher/utility.c +++ b/ExplorerPatcher/utility.c @@ -1582,7 +1582,7 @@ HRESULT SHRegGetDWORD(HKEY hkey, const WCHAR* pwszSubKey, const WCHAR* pwszValue } #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) { @@ -1593,10 +1593,8 @@ inline BOOL MaskCompare(PVOID pBuffer, LPCSTR lpPattern, LPCSTR lpMask) 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) { PBYTE pAddress = (PBYTE)pBase + index; @@ -1607,4 +1605,10 @@ PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask) return NULL; } + +PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, LPCSTR lpMask) +{ + dwSize -= strlen(lpMask); + return FindPatternHelper(pBase, dwSize, lpPattern, lpMask); +} #endif