Files
marohook/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/SDK/CFunctionList.hpp
T
2026-04-29 06:34:14 +03:00

147 lines
18 KiB
C++

#pragma once
#include <vector>
#include <Common/Common.hpp>
#include <CS2/SDK/SDK.hpp>
#include <CS2/CBasePattern.hpp>
#define DECLARATE_CS2_FUNCTION_SDK_FASTCALL(Ret,Function,Param,UsingParam,CallParam)\
inline Ret Function Param\
{\
using Fn = Ret ( __fastcall* ) UsingParam;\
Fn Original = static_cast<Fn>( GetFunctionList()->##Function##.GetFunction() );\
return Original##CallParam##;\
}
class CFunctionList final
{
public:
auto OnInit() -> bool;
public:
CBasePattern CGameEntitySystem_GetBaseEntity = { VmpStr( "CGameEntitySystem::GetBaseEntity" ) , VmpStr( "4C 8D 49 10 81 FA ?? ?? 00 00 77 ?? 8B CA C1 F9 09" ) , CLIENT_DLL };
CBasePattern CGameEntitySystem_GetLocalPlayerController = { VmpStr( "CGameEntitySystem::GetLocalPlayerController" ) , VmpStr( "E8 ? ? ? ? 48 8B E8 48 85 C0 74 ? 33 DB 39 1D" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern CCSInventoryManager_Get = { VmpStr( "CCSInventoryManager::Get" ) , VmpStr( "E8 ? ? ? ? 48 8B D8 E8 ? ? ? ? 8B 70" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
/* String -> "\nLOADOUT ACTION BATCH #%i\n" */
CBasePattern CCSInventoryManager_EquipItemInLoadout = { VmpStr( "CCSInventoryManager::EquipItemInLoadout" ) , VmpStr( "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 89 54 24 ? 57 41 54 41 55 41 56 41 57 48 83 EC ? 0F B7 FA" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
/* String -> "item_sub_position2" */
CBasePattern CCSPlayerInventory_GetItemInLoadout = { VmpStr( "CCSPlayerInventory::GetItemInLoadout" ) , VmpStr( "40 55 48 83 EC ? 49 63 E8" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
/*
00007FF8EEEC826 | 666666:0F1F8400 00000000 | nop word ptr ds:[rax+rax],ax |
00007FF8EEEC827 | 49:8B42 28 | mov rax,qword ptr ds:[r10+0x28] |
00007FF8EEEC827 | 0FB7CF | movzx ecx,di |
00007FF8EEEC827 | 48:8B5CC8 08 | mov rbx,qword ptr ds:[rax+rcx*8+0x8] |
00007FF8EEEC827 | 49:8BCF | mov rcx,r15 |
00007FF8EEEC827 | 8B53 30 | mov edx,dword ptr ds:[rbx+0x30] |
00007FF8EEEC828 | E8 59FFFEFF | call <client.sub_7FF8EEEB81E0> | CreateBaseTypeCache
*/
CBasePattern CGCClientSharedObjectCache_CreateBaseTypeCache = { VmpStr( "CGCClientSharedObjectCache::CreateBaseTypeCache" ) , VmpStr( "E8 ? ? ? ? 41 8B D5 49 8B CD" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern CGCClientSharedObjectCache_FindTypeCache = { VmpStr( "CGCClientSharedObjectCache::FindTypeCache" ) , VmpStr( "4C 8B 49 18 44 8B D2 4C 63 41 10 4F 8D 1C C1 49 8B C3" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
/*
00007FF866438B2 | 48:8D05 DD8D6D00 | lea rax,qword ptr ds:[0x7FF866B11908] | 00007FF866B11908:"Update(CEconItem)"
00007FF866438B2 | 45:33C0 | xor r8d,r8d |
00007FF866438B2 | 48:894424 30 | mov qword ptr ss:[rsp+0x30],rax |
00007FF866438B3 | 4C:8D0D 1E8E6D00 | lea r9,qword ptr ds:[0x7FF866B11958] | 00007FF866B11958:"CEconItem"
00007FF866438B3 | 48:8D05 DF8D6D00 | lea rax,qword ptr ds:[0x7FF866B11920] | 00007FF866B11920:"Create(CEconItem)"
00007FF866438B4 | 48:894424 28 | mov qword ptr ss:[rsp+0x28],rax |
00007FF866438B4 | 48:8D15 634AFBFF | lea rdx,qword ptr ds:[0x7FF8663ED5B0] | CreateSharedObjectSubclassEconItem
*/
CBasePattern CreateSharedObjectSubclassEconItem = { VmpStr( "CreateSharedObjectSubclassEconItem" ) , VmpStr( "48 83 EC ? B9 ? ? ? ? E8 ? ? ? ? 48 85 C0 74 ? 48 8D 0D ? ? ? ? C7 40" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
/*
00007FF9D272C96 | 85D2 | test edx,edx | GetAttributeDefinitionInterface
00007FF9D272C96 | 78 17 | js client.7FF9D272C97B |
00007FF9D272C96 | 3B91 58010000 | cmp edx,dword ptr ds:[rcx+0x158] |
00007FF9D272C96 | 7D 0F | jge client.7FF9D272C97B |
00007FF9D272C96 | 48:8B81 60010000 | mov rax,qword ptr ds:[rcx+0x160] |
00007FF9D272C97 | 48:63D2 | movsxd rdx,edx |
00007FF9D272C97 | 48:8B04D0 | mov rax,qword ptr ds:[rax+rdx*8] |
00007FF9D272C97 | C3 | ret |
00007FF9D272C97 | 33C0 | xor eax,eax |
00007FF9D272C97 | C3 | ret |
00007FF9D272C97 | CC | int3 |
00007FF9D272C97 | CC | int3 |
00007FF9D272C98 | 40:55 | push rbp |
00007FF9D272C98 | 48:83EC 40 | sub rsp,0x40 |
00007FF9D272C98 | 48:895C24 50 | mov qword ptr ss:[rsp+0x50],rbx |
00007FF9D272C98 | 48:897424 58 | mov qword ptr ss:[rsp+0x58],rsi |
00007FF9D272C99 | 48:8BF1 | mov rsi,rcx |
00007FF9D272C99 | 48:8B0D 960D5900 | mov rcx,qword ptr ds:[<g_VProfCurrentProfile>] |
00007FF9D272C99 | 4C:897424 38 | mov qword ptr ss:[rsp+0x38],r14 |
00007FF9D272C99 | 4C:897C24 30 | mov qword ptr ss:[rsp+0x30],r15 |
00007FF9D272C9A | 4C:8BFA | mov r15,rdx |
00007FF9D272C9A | 44:8BB1 20100000 | mov r14d,dword ptr ds:[rcx+0x1020] |
00007FF9D272C9A | 45:85F6 | test r14d,r14d |
00007FF9D272C9B | 74 24 | je client.7FF9D272C9D7 |
00007FF9D272C9B | C74424 28 04000000 | mov dword ptr ss:[rsp+0x28],0x4 |
00007FF9D272C9B | 4C:8D0D 0A847B00 | lea r9,qword ptr ds:[0x7FF9D2EE4DCC] | 00007FF9D2EE4DCC:"Steam"
00007FF9D272C9C | 45:33C0 | xor r8d,r8d |
00007FF9D272C9C | C64424 20 00 | mov byte ptr ss:[rsp+0x20],0x0 |
00007FF9D272C9C | 48:8D15 C70F7C00 | lea rdx,qword ptr ds:[0x7FF9D2EED998] | 00007FF9D2EED998:"CEconItemSchema::GetAttributeDefinitionByName"
*/
CBasePattern CEconItemSchema_GetAttributeDefinitionInterface = { VmpStr( "CEconItemSchema::GetAttributeDefinitionInterface" ) , VmpStr( "E8 ? ? ? ? 48 85 C0 74 ? E8 ? ? ? ? 0F B7 14 3B 48 8B C8 E8 ? ? ? ? 0F B6 48" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern CEconItem_SetDynamicAttributeValueUint = { VmpStr( "CEconItem::SetDynamicAttributeValueUint" ) , VmpStr( "E9 ? ? ? ? CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 49 8B C0 48 8B CA 48 8B D0" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern IGameEvent_GetName = { VmpStr( "IGameEvent::GetName" ) , VmpStr( "8B 41 14 0F BA E0 1E 73 05 48 8D 41 18 C3" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern IGameEvent_GetInt64 = { VmpStr( "IGameEvent::GetInt64" ) , VmpStr( "48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B 01 41 8B F0" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern IGameEvent_GetPlayerController = { VmpStr( "IGameEvent::GetPlayerController" ) , VmpStr( "48 83 EC 38 8B 02 4C 8D 44 24 20" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern IGameEvent_GetString = { VmpStr( "IGameEvent::GetString" ) , VmpStr( "48 83 EC 38 8B 02 48 83 C1 58 89 44 24 20 8B 42 04 89 44 24 24 48 8B 42 08 48 8D 54 24 20 48 89 44 24 28 E8 ? ? ? ? 48 83 C4 38 C3 CC CC CC 33 C9" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern IGameEvent_SetString = { VmpStr( "IGameEvent::SetString" ) , VmpStr( "48 83 EC 38 8B 02 48 83 C1 58 89 44 24 20 41 B1 1A" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_BaseEntity_ComputeHitboxSurroundingBox = { VmpStr( "C_BaseEntity::ComputeHitboxSurroundingBox" ) , VmpStr( "48 89 5C 24 ? 48 89 6C 24 ? 56 57 41 56 B8 ? ? ? ? E8 ? ? ? ? 48 2B E0 48 8B FA" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_EconItemView_GetStaticData = { VmpStr( "C_EconItemView::GetStaticData" ) , VmpStr( "40 56 48 83 EC ? 48 89 5C 24 ? 48 8B F1 48 8B 1D ? ? ? ? 48 85 DB 75 ? B9 ? ? ? ? 48 89 7C 24 ? E8 ? ? ? ? 33 FF 48 8B D8 48 85 C0 74 ? 48 8D 05 ? ? ? ? 48 89 7B ? B9 ? ? ? ? 48 89 03 E8 ? ? ? ? 48 85 C0 74 ? 48 8B C8 E8 ? ? ? ? 48 8B F8 48 8D 05 ? ? ? ? 48 89 7B ? 48 89 03 EB ? 48 8B DF 48 8B 7C 24 ? 48 89 1D ? ? ? ? 48 8B 4B ? 48 8B 5C 24 ? 48 85 C9 75" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CSkeletonInstance_CalcWorldSpaceBones = { VmpStr( "CSkeletonInstance::CalcWorldSpaceBones" ) , VmpStr( "48 89 4C 24 ? 55 53 56 57 41 54 41 55 41 56 41 57 B8 ? ? ? ? E8 ? ? ? ? 48 2B E0 48 8D 6C 24 ? 48 8B 81" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_BaseEntity_GetBoneIdByName = { VmpStr( "C_BaseEntity::GetBoneIdByName" ) , VmpStr( "E8 ? ? ? ? 48 8B CF 85 C0 78 ? 44 8B C0" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern C_EconItemView_GetBasePlayerWeaponVData = { VmpStr( "C_EconItemView::GetBasePlayerWeaponVData" ) , VmpStr( "48 81 EC ? ? ? ? 48 85 C9 75 ? 33 C0 48 81 C4 ? ? ? ? C3 48 89 9C 24" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern KeyValues3_LoadKV3 = { VmpStr( "KeyValues3::LoadKV3" ) , VmpStr( "?LoadKV3@@YA_NPEAVKeyValues3@@PEAVCUtlString@@PEBDAEBUKV3ID_t@@2I@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern IGamePhysicsQuery_TraceShape = { VmpStr( "IGamePhysicsQuery::TraceShape" ) , VmpStr( "48 89 5C 24 ? 48 89 4C 24 ? 55 57" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CCSGOInput_GetViewAngles = { VmpStr( "CCSGOInput::GetViewAngles" ) , VmpStr( "E8 ? ? ? ? EB ? 48 85 C9 75 ? 48 8B CF" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern CCSGOInput_SetViewAngles = { VmpStr( "CCSGOInput::SetViewAngles" ) , VmpStr( "85 D2 75 ? 48 63 81" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
// ___7___Func_impl_no_alloc_V_lambda_1___1__GetSmokeDensityLOS_SmokeVolume__AEAAMAEBV__Vec3D_M__0PEAV4__Z__NAEBV4_I_std__6B_
CBasePattern LineGoesThroughSmoke = { VmpStr( "LineGoesThroughSmoke" ) , VmpStr( "48 8B C4 55 53 56 41 54" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
// [%d] Could not find Hud Element: %s\n
CBasePattern FindHudElement = { VmpStr( "FindHudElement" ) , VmpStr( "4C 8B DC 53 48 83 EC 50 48 8B 05" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_CSWeaponBaseGun_GetInaccuracy = { VmpStr( "C_CSWeaponBaseGun::GetInaccuracy" ) , VmpStr( "48 89 5C 24 10 55 56 57 48 81 EC ? ? ? ? 44 0F 29 84 24 80 00 00 00" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_CSWeaponBaseGun_GetSpread = { VmpStr( "C_CSWeaponBaseGun::GetSpread" ) , VmpStr( "48 83 EC ? 48 63 91 ? ? ? ? 48 8B 81 ? ? ? ? 0F 29 74 24 ? 85 D2" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern SetLocalPlayerReady = { VmpStr( "SetLocalPlayerReady" ) , VmpStr( "40 53 48 83 EC 20 48 8B DA 48 8D 15 ? ? ? ? 48 8B CB FF" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern ScreenTransform = { VmpStr( "ScreenTransform" ) , VmpStr( "48 89 5C 24 ? 57 48 83 EC ? 48 83 3D ? ? ? ? ? 48 8B DA" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CreateSubtickMoveStep = { VmpStr( "CreateSubtickMoveStep" ) , VmpStr( "E8 ? ? ? ? 48 8B D0 49 8D 4E 18 E8 ? ? ? ? 4C 8B C8 4C 8D 43 02 49 8B D1 48 8B CE E8 ? ? ? ? 48 8B D8 48 85 C0 0F 84 ? ? ? ? 48 3B 06 0F 83 ? ? ? ? 0F B7 00 66 C7 45 67 ? ? 66 3B 45 67 74 ? E9 ? ? ? ? 40 80 FF ? 0F 85 ? ? ? ? 41 83 4E 10 ?" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern ProtobufAddToRepeatedPtrElement = { VmpStr( "ProtobufAddToRepeatedPtrElement" ) , VmpStr( "48 89 5C 24 ? 57 48 83 EC ? 48 8B D9 48 8B FA 48 8B 49 ? 48 85 C9 74 ? 8B 01" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern KeyValues_GetName = { VmpStr( "KeyValues::GetName" ) , VmpStr( "?GetName@KeyValues@@QEBAPEBDXZ" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_GetFirstSubKey = { VmpStr( "KeyValues::GetFirstSubKey" ) , VmpStr( "?GetFirstSubKey@KeyValues@@QEAAPEAV1@XZ" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_GetFirstTrueSubKey = { VmpStr( "KeyValues::GetFirstTrueSubKey" ) , VmpStr( "?GetFirstTrueSubKey@KeyValues@@QEAAPEAV1@XZ" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_GetNextTrueSubKey = { VmpStr( "KeyValues::GetNextTrueSubKey" ) , VmpStr( "?GetNextTrueSubKey@KeyValues@@QEAAPEAV1@XZ" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_GetNextKey = { VmpStr( "KeyValues::GetNextKey" ) , VmpStr( "?GetNextKey@KeyValues@@QEAAPEAV1@XZ" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_FindKey = { VmpStr( "KeyValues::FindKey" ) , VmpStr( "?FindKey@KeyValues@@QEBAPEBV1@PEBD@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_GetInt = { VmpStr( "KeyValues::GetInt" ) , VmpStr( "?GetInt@KeyValues@@QEBAHPEBDH@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_GetFloat = { VmpStr( "KeyValues::GetFloat" ) , VmpStr( "?GetFloat@KeyValues@@QEBAMPEBDM@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_GetUint64 = { VmpStr( "KeyValues::GetUint64" ) , VmpStr( "?GetUint64@KeyValues@@QEBA_KPEBD_K@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_FindKeyAndParent = { VmpStr( "KeyValues::FindKeyAndParent" ) , VmpStr( "?FindKeyAndParent@KeyValues@@QEAAPEAV1@PEBDPEAPEAV1@_N@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern CKeyValues_Internal_GetString = { VmpStr( "CKeyValues_Data::Internal_GetString" ) , VmpStr( "?Internal_GetString@CKeyValues_Data@@IEAAPEBDPEBDPEAD_K@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_Constructor = { VmpStr( "KeyValues::KeyValues" ) , VmpStr( "??0KeyValues@@QEAA@PEBDPEAVIKeyValuesSystem@@_N@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_Destructor = { VmpStr( "KeyValues::~KeyValues" ) , VmpStr( "??1KeyValues@@QEAA@XZ" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_LoadFromFile = { VmpStr( "KeyValues::LoadFromFile" ) , VmpStr( "?LoadFromFile@KeyValues@@QEAA_NPEAVIFileSystem@@PEBD1P6A_N1PEAX@Z21@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_Element = { VmpStr( "KeyValues::Element" ) , VmpStr( "?Element@KeyValues@@QEAAPEAV1@H@Z" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern KeyValues_Count = { VmpStr( "KeyValues::Count" ) , VmpStr( "?Count@KeyValues@@QEBAHXZ" ) , TIER0_DLL , 0 , SEARCH_TYPE_PROC };
CBasePattern C_EconItemView_GetCustomPaintKitIndex = { VmpStr( "C_EconItemView::GetCustomPaintKitIndex" ) , VmpStr( "48 89 5C 24 ? 57 48 83 EC ? 8B 15 ? ? ? ? 48 8B F9 65 48 8B 04 25 ? ? ? ? B9 ? ? ? ? 48 8B 04 D0 8B 04 01 39 05 ? ? ? ? 0F 8F ? ? ? ? E8 ? ? ? ? 8B 58 ? 39 1D ? ? ? ? 74 ? E8 ? ? ? ? 48 8B 15 ? ? ? ? 48 8B C8 E8 ? ? ? ? 48 89 05 ? ? ? ? 89 1D ? ? ? ? EB ? 48 8B 05 ? ? ? ? 48 85 C0 74" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_BaseModelEntity_SetModel = { VmpStr( "C_BaseModelEntity::SetModel" ) , VmpStr( "40 53 48 83 EC ? 48 8B D9 4C 8B C2 48 8B 0D ? ? ? ? 48 8D 54 24 40" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CGameSceneNode_SetMeshGroupMask = { VmpStr( "CGameSceneNode::SetMeshGroupMask" ) , VmpStr( "48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8D 99 ? ? ? ? 48 8B 71" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_CSWeaponBase_UpdateSubclass = { VmpStr( "C_CSWeaponBase::UpdateSubclass" ) , VmpStr( "4C 8B DC 53 48 81 EC ? ? ? ? 48 8B 41" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_CSWeaponBase_UpdateSkin = { VmpStr( "C_CSWeaponBase::UpdateSkin" ) , VmpStr( "48 89 5C 24 08 57 48 83 EC 20 8B DA 48 8B F9 E8 ? ? ? ? F6 C3 01 74 0A 33 D2 48 8B CF E8 ? ? ? ? 48 8D 8F 60 19 00 00" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern C_CSWeaponBase_UpdateCompositeMaterial = { VmpStr( "C_CSWeaponBase::UpdateCompositeMaterial" ) , VmpStr( "E8 ? ? ? ? 48 8D 8B ? ? ? ? 48 89 BC 24" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern C_BaseEntity_SetBodyGroup = { VmpStr( "C_BaseEntity::SetBodyGroup" ) , VmpStr( "85 D2 0F 88 CB 01 00 00" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern GetCUserCmdTick = { VmpStr( "GetCUserCmdTick" ) , VmpStr( "48 83 EC ? 4C 8B 0D ? ? ? ? 4C 8B DA" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern GetCUserCmdArray = { VmpStr( "GetCUserCmdArray" ) , VmpStr( "48 89 4C 24 ? 41 56 41 57" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern GetCUserCmdBySequenceNumber = { VmpStr( "GetCUserCmdBySequenceNumber" ) , VmpStr( "40 53 48 83 EC ? 8B DA E8 ? ? ? ? 4C 8B C0" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CEconItem_SerializeToProtoBufItem = { VmpStr( "CEconItem::SerializeToProtoBufItem" ) , VmpStr( "40 55 56 48 83 EC ? 48 8B 41 ? 48 8B F2" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CUIEngineSource2_RunScript = { VmpStr( "CUIEngineSource2::RunScript" ) , VmpStr( "48 89 5C 24 ? 4C 89 4C 24 ? 48 89 54 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24" ) , PANORAMA_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CTraceFilter_Constructor = { VmpStr( "CTraceFilter::Constructor" ) , VmpStr( "48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 0F B6 41 ? 33 FF 24" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
CBasePattern CCSGO_HudWeaponSelection_ClearHudWeaponIcon = { VmpStr( "CCSGO_HudWeaponSelection::ClearHudWeaponIcon" ) , VmpStr( "E8 ? ? ? ? 8B F8 C6 84 24" ) , CLIENT_DLL , 0 , SEARCH_TYPE_CALL };
CBasePattern C_BaseEntity_GetHitBoxSet = { VmpStr( "C_BaseEntity::GetHitBoxSet" ) , VmpStr( "48 89 5C 24 ? 48 89 74 24 ? 57 48 81 EC ? ? ? ? 8B DA 48 8B F9 E8 ? ? ? ? 48 8B F0" ) , CLIENT_DLL , 0 , SEARCH_TYPE_NONE };
};
auto GetFunctionList() -> CFunctionList*;