"Games"
{
	"csgo"
	{
		"Addresses"
		{
			"host_client"
			{
				"windows"
				{
					"signature"	"host_client"
					"read" "58"
				}
				"linux"
				{
					"signature" "host_client"
				}
			}
			
			"CHLTVServer::m_DemoRecorder"
			{
				"windows"
				{
					"signature"	"CHLTVServer::GetRecordingDemoFilename"
					"read"	"2"
				}
				"linux"
				{
					"signature"	"CHLTVServer::GetRecordingDemoFilename"
					"read"	"10"
				}
			}
		}
		"Offsets"
		{
			"CBaseServer::BroadcastPrintf"
			{
				"windows"	"39"
				"linux"		"40"
			}
			
			"CHLTVServer::ConnectClient"
			{
				"windows"	"54"
				"linux"	"55"
			}
			
			"CHLTVServer::RejectConnection"
			{
				"windows"	"52"
				"linux"	"53"
			}
			
			"CHLTVServer::GetChallengeType"
			{
				"windows"	"59"
				"linux"	"60"
			}
			
			"CBaseClient::ActivatePlayer"
			{
				"windows"	"27"
				"linux"	"65"
			}
			
			"CHLTVServer::Shutdown"
			{
				"windows"	"45"
				"linux"	"46"
			}
			
			"CHLTVDirector::m_iPVSEntity"
			{
				"windows"	"32"
				"linux"	"32"
			}
			
			"CHLTVDirector::m_vPVSOrigin"
			{
				"windows"	"36"
				"linux"	"36"
			}
			
			"CHLTVDirector::m_nNextShotTick"
			{
				"windows"	"52"
				"linux"	"52"
			}
		}
		"Signatures"
		{
			"host_client"
			{
				"library"	"engine"
				"linux"	"@host_client"
				// ping(CCommand const&) "Client ping times:\n"
				"windows" "\x55\x8B\xEC\x83\xE4\xC0\x83\xEC\x34\x83\x3D\x2A\x2A\x2A\x2A\x01\x53\x56\x57\x75\x2A"
			}
			
			"CHLTVServer::BroadcastEventLocal"
			{
				"library"	"engine"
				"linux"	"@_ZN11CHLTVServer19BroadcastEventLocalEP10IGameEventb"
				// "SourceTV broadcast local event: %s\n"
				"windows"	"\x55\x8B\xEC\x83\xEC\x4C\x53\x8B\xD9\xC7\x45\xB4\x2A\x2A\x2A\x2A\x56\x8D"
			}
			
			"CHLTVServer::GetRecordingDemoFilename"
			{
				"library"	"engine"
				"linux"	"@_ZN11CHLTVServer24GetRecordingDemoFilenameEv"
				"windows" "\x81\xC1\x2A\x2A\x2A\x2A\x8B\x01\xFF\x20"
			}
			
			// StartRecording and StopRecording are virtual, but get called directly in the linux binary..
			// Need to add a detour.
			"CHLTVDemoRecorder::StartRecording"
			{
				"library"	"engine"
				"linux"	"@_ZN17CHLTVDemoRecorder14StartRecordingEPKcb"
			}
			
			"CHLTVDemoRecorder::StopRecording"
			{
				"library"	"engine"
				"linux"	"@_ZN17CHLTVDemoRecorder13StopRecordingEPK9CGameInfo"
			}
		}
	}
	"cstrike"
	{
		"Addresses"
		{
			"host_client"
			{
				"windows"
				{
					"signature"	"host_client"
					"read" "92"
				}
				"linux"
				{
					"signature" "host_client"
				}
			}
			
			"CHLTVServer::m_DemoRecorder"
			{
				"windows"
				{
					"signature"	"CHLTVServer::Shutdown"
					"read"	"5"
				}
				"linux"
				{
					"signature"	"CHLTVServer::Shutdown"
					"read"	"12"
				}
			}
		}
		"Offsets"
		{
			"CNetChan::SendNetMsg"
			{
				"windows"	"40"
				"linux"	"41"
			}
			
			"CBaseClient::m_NetChannel"
			{
				"windows"	"192"
				"linux"	"164"
			}
			
			"CBaseServer::BroadcastPrintf"
			{
				"windows"	"35"
				"linux"		"36"
			}
			
			"CHLTVServer::ConnectClient"
			{
				"windows"	"49"
				"linux"	"50"
			}
			
			"CHLTVServer::RejectConnection"
			{
				"windows"	"47"
				"linux"	"48"
			}
			
			"CHLTVServer::GetChallengeType"
			{
				"windows"	"54"
				"linux"	"55"
			}
			
			"CBaseClient::ActivatePlayer"
			{
				"windows"	"16"
				"linux"	"56"
			}
			
			"CHLTVServer::Shutdown"
			{
				"windows"	"41"
				"linux"	"42"
			}
			
			"CHLTVDirector::m_iPVSEntity"
			{
				"windows"	"16"
				"linux"	"16"
			}
			
			"CHLTVDirector::m_vPVSOrigin"
			{
				"windows"	"20"
				"linux"	"20"
			}
			
			"CHLTVDirector::m_nNextShotTick"
			{
				"windows"	"40"
				"linux"	"40"
			}
		}
		"Signatures"
		{
			"host_client"
			{
				"library"	"engine"
				"linux"	"@host_client"
				// ping(CCommand const&) "Client ping times:\n"
				"windows" "\x55\x8B\xEC\x51\x83\x3D\x2A\x2A\x2A\x2A\x01\x75\x2A"
			}
			
			"CHLTVServer::BroadcastEventLocal"
			{
				"library"	"engine"
				"linux"	"@_ZN11CHLTVServer19BroadcastEventLocalEP10IGameEventb"
				// "SourceTV broadcast local event: %s\n"
				"windows"	"\x55\x8B\xEC\x81\xEC\x44\x04\x00\x00\x53"
			}
			
			"CHLTVServer::Shutdown"
			{
				"library"	"engine"
				"linux"	"@_ZN11CHLTVServer8ShutdownEv"
				// "HLTV server shutting down"
				"windows"	"\x56\x8B\xF1\x8B\x86\x2A\x2A\x2A\x2A\x8D\x8E\x2A\x2A\x2A\x2A\xFF\x50\x2A\x8B\x86\x2A\x2A\x2A\x2A\x8D\x8E"
			}
			
			// StartRecording and StopRecording are virtual, but get called directly in the linux binary..
			// Need to add a detour.
			"CHLTVDemoRecorder::StartRecording"
			{
				"library"	"engine"
				"linux"	"@_ZN17CHLTVDemoRecorder14StartRecordingEPKcb"
			}
			
			"CHLTVDemoRecorder::StopRecording"
			{
				"library"	"engine"
				"linux"	"@_ZN17CHLTVDemoRecorder13StopRecordingEv"
			}
		}
	}
}