diff --git a/gamedata/core.games/engine.mcv.txt b/gamedata/core.games/engine.mcv.txt
index 10254d9e9d..b98cab06c6 100644
--- a/gamedata/core.games/engine.mcv.txt
+++ b/gamedata/core.games/engine.mcv.txt
@@ -1,45 +1,61 @@
-/**
- * Do not edit this file.  Any changes will be overwritten by the gamedata
- * updater or by upgrading your SourceMod install.
- *
- * To override data in this file, create a subdirectory named "custom" and
- * place your own gamedata file(s) inside of it.  Such files will be parsed
- * after SM's own.
- *
- * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(SourceMod)
- */
-
 "Games"
 {
-	/* CGlobalEntityList */
-	"#default"
-	{
-		"#supported"
-		{
-			"engine"	"mcv"
-		}
-		
-		"Offsets"
-		{
-			/* Offset into LevelShutdown */
-			"gEntList"
-			{
-				"windows"	"33"
-			}
+    /* CGlobalEntityList */
+    /* Windows - get gEntList from offset into CServerGameDLL::LevelShutdown and then get EntInfo offset from gamedata */
+    /* Linux - get gEntList directly from exported symbol and then get the EntInfo offset from gamedata */
 
-			"EntInfo"
+    "#default"
+    {
+        "Addresses"
+		{
+			"EntInfosPtr"
 			{
-				"windows"	"4"	
+				"windows64"
+				{
+					"signature"	"EntInfosFinder"
+					"read"	"19"
+				}
 			}
 		}
 		
 		"Signatures"
-		{
-			"LevelShutdown"
+        {
+            /* gEntList symbol */
+            "gEntList"
+            {
+                "library"       "server"
+                "linux64"       "@gEntList"
+            }
+
+            "LevelShutdown"
+            {
+                "library"       "server"
+                "windows64"     "\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x48\x8D\x0D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8"
+            }
+			
+			// Found from FindEntityByClassname.
+			"EntInfosFinder"
 			{
 				"library"	"server"
-				"windows"	"\x56\x8B\x35\x2A\x2A\x2A\x2A\x8B\xCE\x8B\x06\xFF\x90\x84\x00\x00\x00\xE8\x2A\x2A\x2A\x2A\xE8"
+				// EB 18 0F B7 C1 48 8D 1C 40 48 03 DB 48 8B 5C DF 20 EB 07 48 8B 
+				"windows64"	"\xEB\x18\x0F\xB7\xC1\x48\x8D\x1C\x40\x48\x03\xDB\x2A\x2A\x2A\x2A\x2A\xEB\x07\x48\x8B"
 			}
-		}
-	}
+        }
+
+        "Offsets"
+        {
+            /* Offset into LevelShutdown of gEntList */
+            "gEntList"
+            {
+                "windows64"     "13"
+            }
+
+            /* gEntList->m_EntPtrArray[] offset */
+            "EntInfo"
+            {
+                "linux64"       "8"
+                "windows64"     "8"
+            }
+        }
+    }
 }
diff --git a/gamedata/sdkhooks.games/engine.mcv.txt b/gamedata/sdkhooks.games/engine.mcv.txt
index 334bd5c49c..0e66112c90 100644
--- a/gamedata/sdkhooks.games/engine.mcv.txt
+++ b/gamedata/sdkhooks.games/engine.mcv.txt
@@ -1,112 +1,187 @@
 "Games"
 {
-	"#default"
-	{
-		"Offsets"
+    "#default"
+    {
+        "Offsets"
+        {
+            // "[L0/W0]             L107    W108    CBaseEntity::Blocked(CBaseEntity*)",
+            "Blocked"
+            {
+                "linux64"       "107"
+                "windows64"     "108"
+            }
+            // "[L0/W0]             L105    W106    CBaseEntity::EndTouch(CBaseEntity*)",
+            "EndTouch"
+            {
+                "linux64"       "105"
+                "windows64"     "106"
+            }
+            // "[L0/W0]             L119    W120    CBaseEntity::FireBullets(FireBulletsInfo_t const&)",
+            "FireBullets"
+            {
+                "linux64"       "119"
+                "windows64"     "120"
+            }
+            // "[L0/W0]             L123    W124    CBaseEntity::GetMaxHealth(void)",
+            "GetMaxHealth"
+            {
+                "linux64"       "123"
+                "windows64"     "124"
+            }
+            // "[L0/W0]             L69     W70     CBaseEntity::OnTakeDamage(CTakeDamageInfo const&)",
+            "OnTakeDamage"
+            {
+                "linux64"       "69"
+                "windows64"     "70"
+            }
+            "[L0/W0]             L307    W306    CBasePlayer::OnTakeDamage_Alive(CTakeDamageInfo const&)",
+            "OnTakeDamage_Alive"
+            {
+				"linux64"   	"307"
+				"windows64"     "306"
+            }
+            // "[L0/W0]             L376    W375    CBasePlayer::PreThink(void)",
+            "PreThink"
+            {
+                "linux64"       "376"
+                "windows64"     "375"
+            }
+            // "[L0/W0]             L377    W376    CBasePlayer::PostThink(void)",
+            "PostThink"
+            {
+                "linux64"       "377"
+                "windows64"     "376"
+            }
+            // CBaseCombatWeapon::FinishReload ?????
+            // "[L0/W0]             L294    W296    CBaseCombatWeapon::FinishReload(void)",
+            "Reload"
+            {
+                "linux64"       "294"
+                "windows64"     "296"
+            }
+            // "[L0/W0]             L24     W24     CBaseEntity::SetTransmit(CCheckTransmitInfo *,bool)",
+            "SetTransmit"
+            {
+                "linux64"       "24"
+                "windows64"     "24"
+            }
+            // "[L0/W0]             L19     W19     CBaseEntity::ShouldCollide(int,int)",
+            "ShouldCollide"
+            {
+                "linux64"       "19"
+                "windows64"     "19"
+            }
+            // "[L0/W0]             L32     W27     CBaseEntity::Spawn(void)",
+            // "[L0/W0]             L26     W26     CBaseCombatCharacter::Spawn(void)",
+            "Spawn"
+            {
+                "linux64"       "26"
+                "windows64"     "26"
+            }
+            // "[L0/W0]             L103    W104    CBaseEntity::StartTouch(CBaseEntity*)",
+            "StartTouch"
+            {
+                "linux64"       "103"
+                "windows64"     "104"
+            }
+            // "[L0/W0]             L53     W55     CBaseEntity::Think(void)",
+            "Think"
+            {
+                "linux64"       "53"
+                "windows64"     "55"
+            }
+            // "[L0/W0]             L104    W105    CBaseEntity::Touch(CBaseEntity*)",
+            "Touch"
+            {
+                "linux64"       "104"
+                "windows64"     "105"
+            }
+            // "[L0/W0]             L67     W68     CBaseEntity::TraceAttack(CTakeDamageInfo const&,Vector const&,CGameTrace *)",
+            "TraceAttack"
+            {
+                "linux64"       "67"
+                "windows64"     "68"
+            }
+            // "[L0/W0]             L102    W103    CBaseEntity::Use(CBaseEntity*,CBaseEntity*,USE_TYPE,float)",
+            "Use"
+            {
+                "linux64"       "102"
+                "windows64"     "103"
+            }
+            // "[L0/W0]             L158    W157    CBaseEntity::VPhysicsUpdate(IPhysicsObject *)",
+            "VPhysicsUpdate"
+            {
+                "linux64"       "158"
+                "windows64"     "157"
+            }
+            // "[L0/W0]             L299    W298    CBaseCombatCharacter::Weapon_CanSwitchTo(CBaseCombatWeapon *)",
+            "Weapon_CanSwitchTo"
+            {
+                "linux64"       "299"
+                "windows64"     "298"
+            }
+            // "[L0/W0]             L292    W291    CBaseCombatCharacter::Weapon_CanUse(CBaseCombatWeapon *)",
+            "Weapon_CanUse"
+            {
+                "linux64"       "292"
+                "windows64"     "291"
+            }
+            // "[L0/W0]             L296    W295    CBaseCombatCharacter::Weapon_Drop(CBaseCombatWeapon *,Vector const*,Vector const*)",
+            "Weapon_Drop"
+            {
+                "linux64"       "296"
+                "windows64"     "295"
+            }
+            // "[L0/W0]             L293    W292    CBaseCombatCharacter::Weapon_Equip(CBaseCombatWeapon *)",
+            "Weapon_Equip"
+            {
+                "linux64"       "293"
+                "windows64"     "292"
+            }
+            // "[L0/W0]             L297    W296    CBaseCombatCharacter::Weapon_Switch(CBaseCombatWeapon *,int)",
+            "Weapon_Switch"
+            {
+                "linux64"       "297"
+                "windows64"     "296"
+            }
+        }
+    }
+    
+    "#default"
+    {
+        "Offsets"
+        {
+            "EntityListeners"
+            {
+                // 49159
+                // 98322
+                //"windows"   "196644"
+				"windows64" "393272" // wild guess based on Ins2 Win offsets.
+				//"windows64" "98318"
+                "linux64"   "49159"
+            }
+        }
+		
+		"Addresses"
 		{
-			"Blocked"
+			"EntityListenersPtr"
 			{
-				"windows"	"106"
-			}
-			"EndTouch"
-			{
-				"windows"	"104"
-			}
-			"FireBullets"
-			{
-				"windows"	"118"
-			}
-			"GetMaxHealth"
-			{
-				"windows"	"122"
-			}
-			"OnTakeDamage"
-			{
-				"windows"	"68"
-			}
-			"OnTakeDamage_Alive"
-			{
-				"windows"	"306"
-			}
-			"PreThink"
-			{
-				"windows"	"376"
-			}
-			"PostThink"
-			{
-				"windows"	"377"
-			}
-			"Reload"
-			{
-				"windows"	"295"
-			}
-			"SetTransmit"
-			{
-				"windows"	"23"
-			}
-			"ShouldCollide"
-			{
-				"windows"	"18"
-			}
-			"Spawn"
-			{
-				"windows"	"25"
-			}
-			"StartTouch"
-			{
-				"windows"	"102"
-			}
-			"Think"
-			{
-				"windows"	"52"
-			}
-			"Touch"
-			{
-				"windows"	"103"
-			}
-			"TraceAttack"
-			{
-				"windows"	"66"
-			}
-			"Use"
-			{
-				"windows"	"101"
-			}
-			"VPhysicsUpdate"
-			{
-				"windows"	"157"
-			}
-			"Weapon_CanSwitchTo"
-			{
-				"windows"	"297"
-			}
-			"Weapon_CanUse"
-			{
-				"windows"	"291"
-			}
-			"Weapon_Drop"
-			{
-				"windows"	"294"
-			}
-			"Weapon_Equip"
-			{
-				"windows"	"292"
-			}
-			"Weapon_Switch"
-			{
-				"windows"	"296"
+				"windows64"
+				{
+					"signature"	"EntityListenersFinder"
+					"read"		"18"
+				}
 			}
 		}
-	}
-	
-	"#default"
-	{
-		"Offsets"
+		
+		"Signatures"
 		{
-			"EntityListeners"
+			// CGlobalEntityList::AddListenerEntity has symbols in windows64 binaries
+			"EntityListenersFinder"
 			{
-				"windows"	"196644"
+				"library"	"server"
+				"windows64"	"\x48\x89\x54\x24\x10\x48\x83\xEC\x28\x4C\x8D\x91\x38\x00\x06\x00"
 			}
 		}
-	}
+    }
 }
diff --git a/gamedata/sdktools.games/engine.mcv.txt b/gamedata/sdktools.games/engine.mcv.txt
index 081c2b09d5..041a774a21 100644
--- a/gamedata/sdktools.games/engine.mcv.txt
+++ b/gamedata/sdktools.games/engine.mcv.txt
@@ -1,284 +1,261 @@
-/**
- * Do not edit this file.  Any changes will be overwritten by the gamedata
- * updater or by upgrading your SourceMod install.
- *
- * To override data in this file, create a subdirectory named "custom" and
- * place your own gamedata file(s) inside of it.  Such files will be parsed
- * after SM's own.
- *
- * For more information, see http://wiki.alliedmods.net/Gamedata_Updating_(SourceMod)
- */
-
 "Games"
 {
-	/* Sounds */
-	"#default"
-	{
-		"Keys"
-		{
-			"SlapSoundCount"	"6"
-			"SlapSound1"		"physics/flesh/vietnam_flesh_impact_bullet1.wav"
-			"SlapSound2"		"physics/flesh/vietnam_flesh_impact_bullet2.wav"
-			"SlapSound3"		"physics/flesh/vietnam_flesh_impact_bullet3.wav"
-			"SlapSound4"		"physics/flesh/vietnam_flesh_impact_bullet4.wav"
-			"SlapSound5"		"physics/flesh/vietnam_flesh_impact_bullet5.wav"
-			"SlapSound6"		"physics/flesh/vietnam_flesh_impact_bullet6.wav"
-		}
-	}
-	
-	/* General Temp Entities */
-	"#default"
-	{
-		"Offsets"
-		{
-			/* Offset into CBaseTempEntity signature address */
-			"s_pTempEntities"
-			{
-				"windows"	"16"
-			}
-			"GetTEName"
-			{
-				"windows"	"4"
-			}
-			"GetTENext"
-			{
-				"windows"	"8"
-			}
-			"TE_GetServerClass"
-			{
-				"windows"	"0"
-			}
-		}
+    "#default"
+    {
+        "Keys"
+        {
+            "SlapSoundCount"    "6"
+            "SlapSound1"        "physics/flesh/vietnam_flesh_impact_bullet1.wav"
+            "SlapSound2"        "physics/flesh/vietnam_flesh_impact_bullet2.wav"
+            "SlapSound3"        "physics/flesh/vietnam_flesh_impact_bullet3.wav"
+            "SlapSound4"        "physics/flesh/vietnam_flesh_impact_bullet4.wav"
+            "SlapSound5"        "physics/flesh/vietnam_flesh_impact_bullet5.wav"
+            "SlapSound6"        "physics/flesh/vietnam_flesh_impact_bullet6.wav"
 
-		"Signatures"
-		{
-			"CBaseTempEntity"
-			{
-				"library"	"server"
-				"windows"	"\x55\x8B\xEC\x8B\x45\x08\x89\x41\x04\xC7\x01"
-			}
-		}
-	}
 
-	/* CGlobalEntityList */
-	"#default"
-	{
-		"Signatures"
-		{
-			/* Functions in CGlobalEntityList */
-			"FindEntityByClassname"
-			{
-				"library"	"server"
-				"windows"	"\x55\x89\xE5\x57\x56\x53\x83\xEC\x1C\x8B\x45\x0C\x8B\x5D\x08\x8B\x7D\x10\x85\xC0\x0F\x84\x2A\x2A\x2A\x2A\x8B\x10\x89\x04\x24\xFF\x52\x0C\x8B\x10\xB8\xFF\x1F\x00\x00\x0F\xB7\xCA\x83\xFA\xFF\x0F\x45\xC1\x8D\x04\x40\x8B\x5C\xC3\x10\xEB\x2A\x90\x2A\x2A\x2A\x2A\x89"
-			}
-		}
-	}
+            "GameRulesProxy"        "CVietnamGameRulesProxy"
+            "GameRulesDataTable"    "vietnam_gamerules"
+        }
 
-	/* General GameRules */
-	"#default"
-	{
-		"Keys"
-		{
-			"GameRulesProxy"		"CVietnamGameRulesProxy"
-			"GameRulesDataTable"	"vietnam_gamerules"
-		}
-	}
+        "Signatures"
+        {
+            /* This signature sometimes has multiple matches, but this
+             * does not matter as g_pGameRules is involved in all of them.
+             * The same g_pGameRules offset applies to each match.
+             *
+             * Sometimes this block of bytes is at the beginning of the static
+             * CreateGameRulesObject function and sometimes it is in the middle
+             * of an entirely different function. This depends on the game.
+             */
+            "CreateGameRulesObject"
+            {
+                "library"       "server"
+                "windows64"     "\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x30\x48\x8B\xF9\x48\x8B\x0D\x2A\x2A\x2A\x2A\x48\x85\xC9"
+            }
+            "g_pGameRules"
+            {
+                "library"       "server"
+                "linux64"       "@g_pGameRules"
+            }
+        }
+        "Signatures"
+        {
+            /* CBaseServer object for IServer interface */
+            "sv"
+            {
+                "library"   "engine"
+                "linux64"     "@sv"
+            }
+        }
 
-	/* IServer interface pointer */
-	"#default"
-	{
-		"Keys"
-		{
-			/* Signature for the beginning of IVEngineServer::CreateFakeClient.
-			 *
-			 * The engine binary is not actually scanned in order to look for
-			 * this. SourceHook is used to used to determine the address of the
-			 * function and this signature is used to verify that it contains
-			 * the expected code. A pointer to sv (IServer interface) is used
-			 * here.
-			 */
-			"CreateFakeClient_Windows"	"\x55\x8B\xEC\x56\xFF\x75\x08\xB9"
-		}
-		
-		"Offsets"
-		{
-			/* Offset into IVEngineServer::CreateFakeClient */
-			"sv"
-			{
-				"windows"	"8"
-			}
-		}
-		
-	}
-	
-	/* EntityFactoryDictionary function */
-	"#default"
-	{
-		"Signatures"
-		{
-			"EntityFactory"
-			{
-				"library"	"server"
-				"windows"	"\xA1\x2A\x2A\x2A\x2A\xA8\x01\x0F\x85\x2A\x2A\x2A\x2A\x83\xC8\x01"
-			}
-		}
-	}
+        /* General Temp Entities */
+        "Offsets"
+        {
+            /* Offset into CBaseTempEntity signature address */
+            "s_pTempEntities"
+            {
+                "windows64"   "16"
+            }
+            "GetTEName"
+            {
+                "windows64"   "4"
+            }
+            "GetTENext"
+            {
+                "windows64"   "8"
+            }
+            "TE_GetServerClass"
+            {
+                "windows64"   "0"
+            }
 
-	/* CBaseEntityOutput::FireOutput */
-	"#default"
-	{
-		"Signatures"
-		{
-			"FireOutput"
-			{
-				"library"	"server"
-				"windows"	"\x55\x8B\xEC\x81\xEC\x44\x01\x00\x00\x8B\xC1"
-			}
-		}
-	}
-	
- 	/* CBaseAnimating::LookupAttachment */
-	"#default"
-	{
-		"Signatures"
-		{
-			"LookupAttachment"
-			{
-				"library"	"server"
-				"windows"	"\x55\x8B\xEC\x56\x8B\xF1\x83\xBE\xF4\x04\x00\x00\x00\x75\x2A\xE8\x2A\x2A\x2A\x2A\x85\xC0\x74\x2A\x8B\xCE\xE8\x2A\x2A\x2A\x2A\x8B\x86\xF4\x04\x00\x00\x5E\x85\xC0\x74\x2A\x83\x38\x00\x74\x2A\xFF\x75\x08\x50\xE8\x2A\x2A\x2A\x2A\x83\xC4\x08\x40"
-			}
-		}
-	}
-	
-	/* SetUserInfo data */
-	"#default"
-	{
-		"Offsets"
-		{
-			/**
-			 * CBaseClient::SetUserCVar(char  const*,char  const*);
-			 * Linux offset straight from VTable dump.
-			 * Windows offset is crazy. Found the windows SetName function using string "(%d)%-.*s" (aD_S in IDA)
-			 * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1)
-			 */
-			"SetUserCvar"
-			{
-				/* Not 100% sure on this, why would windows change and not linux - TEST ME */
-				"windows"	"31"
-			}
-			/**
-			 * CBaseClient::SetName(char  const*);
-			 * Linux offset straight from VTable dump.
-			 * Has string "(%d)%-0.*s"
-			 */
-			"SetClientName"
-			{
-				"windows"	"30"
-			}
-			/**
-			 * Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
-			 * Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
-			 * Linux: 	mov     byte ptr [esi+0B0h], 0
-			 * Win:		mov     byte ptr [esi+0B0h], 0
-			 *
-			 * L4D2: This has been moved into CBaseClient::UpdateUserSettings(), rest of the details are still relevant.
-			 */
-			"InfoChanged"
-			{
-				"windows"	"488"
-			}
-		}
-	}
-	
- 	"#default"
-	{
-		"Keys"
-		{
-			// Netprop on the team entity for team score
-			"m_iScore"		"m_scoreTotal"
-		}
-		"Offsets"
-		{
-			"SetOwnerEntity"
-			{
-				"windows"	"19"
-			}
-			"GiveNamedItem"
-			{
-				"windows"	"461"
-			}
-			"RemovePlayerItem"
-			{
-				"windows"	"304"
-			}
-			"Weapon_GetSlot"
-			{
-				"windows"	"299"
-			}
-			"Ignite"
-			{
-				"windows"	"229"
-			}
-			"Extinguish"
-			{
-				"windows"	"232"
-			}
-			"Teleport"
-			{
-				"windows"	"114"
-			}
-			"CommitSuicide"
-			{
-				"windows"	"511"
-			}
-			"GetVelocity"
-			{
-				"windows"	"140"
-			}
-			"EyeAngles"
-			{
-				"windows"	"131"
-			}
-			"AcceptInput"
-			{
-				"windows"	"41"
-			}
-			"SetEntityModel"
-			{
-				"windows"	"27"
-			}
-			"WeaponEquip"
-			{
-				"windows"	"292"
-			}
-			"Activate"
-			{
-				"windows"	"38"
-			}
-			"PlayerRunCmd"
-			{
-				"windows"	"481"
-			}
-			"GiveAmmo"
-			{
-				"windows"	"285"
-			}
-			"GetAttachment"
-			{
-				"windows"	"223"
-			}
-		}
-		"Signatures"
-		{
-			/**
-			 *	CNetworkStringTableContainer::WriteBaselines
-			 *	"Index error writing string table baseline %s\n"
-			 */
-			"WriteBaselines"
-			{
-				"library"	"engine"
-				"windows"	"\x55\x8B\xEC\x83\xEC\x58\x53\x56\x8B\xF1"
-			}
-		}
-	}
+            /* Offset into IVEngineServer::CreateFakeClient */
+            //"sv"
+            //{
+            //    // "windows64"   "8"
+            //}
+            /**
+             * CBaseClient::SetUserCVar(char  const*,char  const*);
+             * linux64 offset straight from VTable dump.
+             * windows64 offset is crazy. Found the windows64 SetName function using string "(%d)%-.*s" (aD_S in IDA)
+             * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1)
+             */
+            "SetUserCvar"
+            {
+                "linux64"     "69"
+                "windows64"   "61"
+            }
+            /**
+             * CBaseClient::SetName(char  const*);
+             * linux64 offset straight from VTable dump.
+             * Has string "(%d)%-0.*s"
+             */
+            "SetClientName"
+            {
+                "linux64"     "68"
+                "windows64"   "60"
+            }
+            /**
+             * Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
+             * Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
+             * linux64:   mov     byte ptr [rbx+258h], 0
+             * Win64:     mov     byte ptr [rsi+278h], 0
+             * In this example, offset is 278h = 632
+             * MCV: This has been moved into CBaseClient::UpdateUserSettings(), rest of the details are still relevant.
+             */
+            "InfoChanged"
+            {
+                "linux64"      "600"
+                "windows64"    "632"
+            }
+            // "[L0/W0]             L20     W20     CBaseEntity::SetOwnerEntity(CBaseEntity*)",
+            "SetOwnerEntity"
+            {
+                "linux64"     "20"
+                "windows64"   "20"
+            }
+            // "[L0/W0]             L462    W462    CVietnam_Player::GiveNamedItem(char const*,int,bool,bool,Vector const*)",
+            "GiveNamedItem"
+            {
+                "linux64"     "462"
+                "windows64"   "462"
+            }
+            // "[L0/W0]             L305    W304    CBaseCombatCharacter::RemovePlayerItem(CBaseCombatWeapon *)",
+            "RemovePlayerItem"
+            {
+                "linux64"     "305"
+                "windows64"   "304"
+            }
+            // "[L0/W0]             L301    W300    CBaseCombatCharacter::Weapon_GetSlot(int)",
+            "Weapon_GetSlot"
+            {
+                "linux64"     "301"
+                "windows64"   "300"
+            }
+            // "[L0/W0]             L230    W229    CBaseAnimating::Ignite(float,bool,float,bool,CBaseEntity *,string_t)",
+            "Ignite"
+            {
+                "linux64"     "230"
+                "windows64"   "229"
+            }
+            // "[L0/W0]             L233    W232    CBaseAnimating::Extinguish()",
+            "Extinguish"
+            {
+                "linux64"     "233"
+                "windows64"   "232"
+            }
+            // "[L0/W0]             L115    W114    CBaseEntity::Teleport(Vector const*,QAngle const*,Vector const*,bool)",
+            "Teleport"
+            {
+                "linux64"     "115"
+                "windows64"   "114"
+            }
+            // Unsure which of these to use, so let's try the bool bool one first
+            // "[L0/W0]             L511    W512    CBasePlayer::CommitSuicide(bool,bool)",
+            // "[L0/W0]             L512    W511    CBasePlayer::CommitSuicide(Vector const&,bool,bool)",
+            "CommitSuicide"
+            {
+                "linux64"     "511"
+                "windows64"   "512"
+            }
+            // "[L0/W0]             L141    W140    CBaseEntity::GetVelocity(Vector *,Vector *)",
+            "GetVelocity"
+            {
+                "linux64"     "140"
+                "windows64"   "140"
+            }
+            // "[L0/W0]             L132    W131    CBaseEntity::EyeAngles(void)",
+            "EyeAngles"
+            {
+                "linux64"     "132"
+                "windows64"   "131"
+            }
+            // "[L0/W0]             L42     W41     CBaseEntity::AcceptInput(char const*,CBaseEntity*,CBaseEntity*,variant_t,int)",
+            "AcceptInput"
+            {
+                "linux64"     "42"
+                "windows64"   "41"
+            }
+            // "[L0/W0]             L28     W29     CBaseEntity::SetModel(char const*)",
+            "SetEntityModel"
+            {
+                "linux64"     "28"
+                "windows64"   "27"
+            }
+            // "[L0/W0]             L293    W292    CBaseCombatCharacter::Weapon_Equip(CBaseCombatWeapon *)",
+            "WeaponEquip"
+            {
+                "linux64"     "293"
+                "windows64"   "292"
+            }
+            // "[L0/W0]             L39     W41     CBaseEntity::Activate(void)",
+            "Activate"
+            {
+                "linux64"     "39"
+                "windows64"   "41"
+            }
+            // "[L0/W0]             L482    W482    CBasePlayer::PlayerRunCommand(CUserCmd *,IMoveHelper *)",
+            "PlayerRunCmd"
+            {
+                "linux64"     "482"
+                "windows64"   "482"
+            }
+            // "[L0/W0]             L286    W285    CBaseCombatCharacter::GiveAmmo(int,int,bool)",
+            "GiveAmmo"
+            {
+                "linux64"     "286"
+                "windows64"   "285"
+            }
+            // "[L0/W0]             L224    W223    CBaseAnimating::GetAttachment(int,matrix3x4_t &)",
+            "GetAttachment"
+            {
+                "linux64"     "224"
+                "windows64"   "223"
+            }
+        }
+        "Signatures"
+        {
+            "CBaseTempEntity"
+            {
+                "library"   "server"
+                "windows64"   "\x48\x8D\x05\x2A\x2A\x2A\x2A\x48\x89\x51\x08\x48\x89\x01\x48\x8B\x05"
+                "linux64"     "@_ZN15CBaseTempEntityC2EPKc"
+            }
+            // "NULL entity in global entity list!\n"
+            "FindEntityByClassname"
+            {
+                "library"   "server"
+                "windows64"   "\x48\x89\x5C\x24\x08\x48\x89\x74\x24\x10\x57\x48\x83\xEC\x20\x49\x8B\xF0\x48\x8B\xF9\x48\x85\xD2"
+                "linux64"     "@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
+            }
+			// const CEntityFactoryDictionary::`vftable'
+            "EntityFactory"
+            {
+                "library"   "server"
+                "windows64"   "\x48\x83\xEC\x28\x8B\x2A\x2A\x2A\x82\x00\xA8\x01"
+                "linux64"     "@_ZN24CEntityFactoryDictionary14InstallFactoryEP14IEntityFactoryPKc"
+            }
+            "FireOutput"
+            {
+                "library"   "server"
+                "windows64"   "\x4C\x8B\xDC\x41\x54\x41\x55"
+                "linux64"     "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
+            }
+			// Fuction calls between strings "eyes"(1st xref), "chest"(1st xref), "forward"(3rd xref) - CAI_BaseActor::UpdateHeadControl(CAI_BaseActor *this, const Vector *a2, float a3, float a4)
+            "LookupAttachment"
+            {
+                "library"   "server"
+                "windows64"   "\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x20\x48\x83\xB9\x38\x06\x00\x00\x00\x48\x8B\xFA\x48\x8B\xD9\x75\x2A\xE8\x2A\x2A\x2A\x2A\x48\x85\xC0\x74\x2A\x48\x8B\xCB\xE8\x2A\x2A\x2A\x2A\x48\x8B\x8B\x38\x06\x00\x00\x48\x85\xC9\x74\x2A\x48\x83\x39\x00\x74\x2A\x48\x8B\xD7\xE8\x2A\x2A\x2A\x2A"
+                "linux64"     "@_ZN14CBaseAnimating16LookupAttachmentEPKc"
+            }
+			// "Index error writing string table baseline"
+            "WriteBaselines"
+            {
+                "library"   "engine"
+				// This signature seems to be right, but causes server hangs when player joining it.
+                //"windows64"   "\x4C\x8B\xDC\x53\x41\x55\x48\x81\xEC\xF8\x00\x00\x00"
+                "linux64"     "@_ZN28CNetworkStringTableContainer14WriteBaselinesEPKcR8bf_writei"
+            }
+        }
+    }
 }