CHLTVDemoRecorder::WriteServerInfo
0x0016ddf0 · 1563 bytes · __thiscall
_ZN17CHLTVDemoRecorder15WriteServerInfoEv
Decompiled
undefined (1 param)
/* CHLTVDemoRecorder::WriteServerInfo() */
void __thiscall CHLTVDemoRecorder::WriteServerInfo(CHLTVDemoRecorder *this)
{
char cVar1;
uchar *puVar2;
char *pcVar3;
int *piVar4;
int *piVar5;
int in_GS_OFFSET;
bf_write local_a1c [24];
undefined **local_a04;
undefined1 local_a00;
undefined4 local_9fc;
undefined4 local_9f8;
undefined4 local_9f4;
undefined4 local_9f0;
undefined4 local_9ec;
undefined4 local_9e8;
undefined4 local_9e4;
undefined4 local_9e0;
undefined4 local_9dc;
undefined4 local_9d8;
undefined4 local_9d4;
undefined1 local_9d0;
undefined4 local_9cc;
undefined4 local_9c8;
undefined4 local_9c4;
undefined4 local_9c0;
undefined4 local_9b8;
undefined4 local_9b4;
undefined4 local_9b0;
undefined **local_9ac;
undefined1 local_9a8;
undefined4 local_9a4;
undefined4 local_9a0;
undefined4 local_99c;
undefined4 local_998;
undefined4 local_994;
undefined4 local_990;
undefined4 local_98c;
undefined4 local_988;
undefined4 local_984;
undefined4 local_980;
undefined4 local_97c;
undefined1 local_978;
undefined4 local_974;
undefined4 local_970;
undefined4 local_96c;
undefined4 local_968;
undefined4 local_960;
undefined4 local_95c;
undefined4 local_958;
int local_954;
undefined4 local_950;
undefined **local_94c;
undefined1 local_948;
undefined4 local_944;
undefined4 local_940;
undefined4 local_93c;
undefined4 local_938;
undefined4 local_934;
undefined4 local_930;
undefined4 local_92c;
undefined4 local_928;
undefined4 local_924;
undefined4 local_920;
undefined4 local_91c;
undefined1 local_918;
undefined4 local_914;
undefined4 local_910;
undefined4 local_90c;
undefined4 local_908;
undefined4 local_900;
undefined4 local_8fc;
undefined4 local_8f8;
undefined4 local_8f4;
undefined4 local_8f0;
undefined4 local_8ec;
undefined4 local_8e8;
undefined4 local_8e4;
undefined4 local_8e0;
undefined4 local_8dc;
undefined4 local_8d8;
undefined4 local_8d4;
undefined4 local_8d0;
NetMessageCvar_t local_8cc [260];
char local_7c8 [260];
undefined **local_6c4;
undefined1 local_6c0;
undefined4 local_6bc;
undefined4 local_6b8;
undefined4 local_6b4;
undefined4 local_6b0;
undefined4 local_6ac;
undefined4 local_6a8;
undefined4 local_6a4;
undefined4 local_6a0;
undefined4 local_69c;
undefined4 local_698;
undefined4 local_694;
undefined1 local_690;
undefined4 local_68c;
undefined4 local_688;
undefined4 local_684;
undefined4 local_680;
int local_20;
local_20 = *(int *)(in_GS_OFFSET + 0x14);
puVar2 = (uchar *)NET_AllocPayload();
/* try { // try from 0016de40 to 0016de44 has its CatchHandler @ 0016e492 */
bf_write::bf_write(local_a1c,"CHLTVDemoRecorder::WriteServerInfo",puVar2,0x37aa0,-1);
local_6b8 = 0;
local_6b4 = 0;
local_6b0 = 0;
local_6ac = 0;
local_6a8 = 0;
local_6a4 = 0;
local_6a0 = 0;
local_69c = 0;
local_698 = 0;
local_694 = 0;
local_690 = 0;
local_68c = 0;
local_688 = 0;
local_684 = 0;
local_680 = 0;
local_6c0 = 1;
local_6bc = 0;
local_6c4 = &PTR__SVC_ServerInfo_002a1828;
/* try { // try from 0016defd to 0016df2f has its CatchHandler @ 0016e48e */
cVar1 = (**(code **)(*hltv + 0x54))(hltv);
piVar4 = hltv;
if (cVar1 == '\0') {
if (hltv == (int *)0x0) {
piVar4 = (int *)0x0;
piVar5 = (int *)0x0;
}
else {
piVar5 = hltv + 1;
}
}
else {
piVar5 = &sv;
}
(**(code **)(*piVar4 + 0x24))(piVar4,(SVC_ServerInfo *)&local_6c4);
SVC_ServerInfo::WriteToBuffer((SVC_ServerInfo *)&local_6c4,local_a1c);
local_9f8 = 0;
local_9f4 = 0;
local_9f0 = 0;
local_9ec = 0;
local_9b8 = *(undefined4 *)(this + 0x594);
local_9e8 = 0;
local_9e4 = 0;
local_9e0 = 0;
local_9dc = 0;
local_9d8 = 0;
local_9d4 = 0;
local_9d0 = 0;
local_9cc = 0;
local_9c8 = 0;
local_9c4 = 0;
local_9c0 = 0;
local_9fc = 0;
local_a04 = &PTR__NET_Tick_002a1b28;
local_a00 = 0;
local_9b4 = 0;
local_9b0 = 0;
/* try { // try from 0016e011 to 0016e015 has its CatchHandler @ 0016e48c */
NET_Tick::WriteToBuffer((NET_Tick *)&local_a04,local_a1c);
local_9a0 = 0;
local_99c = 0;
local_998 = 0;
local_994 = 0;
local_990 = 0;
local_98c = 0;
local_988 = 0;
local_984 = 0;
local_980 = 0;
local_97c = 0;
local_978 = 0;
local_974 = 0;
local_970 = 0;
local_96c = 0;
local_968 = 0;
local_9a8 = 1;
local_9a4 = 0;
local_9ac = &PTR__NET_SetConVar_002a1ca8;
local_960 = 0;
local_95c = 0;
local_958 = 0;
local_954 = 0;
local_950 = 0;
/* try { // try from 0016e10f to 0016e1b9 has its CatchHandler @ 0016e488 */
Host_BuildConVarUpdateMessage((CUtlVector *)&local_960,0x2000,true);
cVar1 = (**(code **)(*hltv + 0x54))(hltv);
if (cVar1 != '\0') {
V_strncpy((char *)local_8cc,"tv_transmitall",0x104);
V_strncpy(local_7c8,"1",0x104);
CUtlVector<NetMessageCvar_t,CUtlMemory<NetMessageCvar_t,int>>::InsertBefore
((CUtlVector<NetMessageCvar_t,CUtlMemory<NetMessageCvar_t,int>> *)&local_960,local_954
,local_8cc);
}
NET_SetConVar::WriteToBuffer((NET_SetConVar *)&local_9ac,local_a1c);
pcVar3 = (char *)(**(code **)(*piVar5 + 0x3c))(piVar5);
CNetworkStringTableContainer::WriteBaselines
((CNetworkStringTableContainer *)hltv[0x30],pcVar3,local_a1c);
local_8fc = (**(code **)(*piVar5 + 0x40))(piVar5);
local_940 = 0;
local_93c = 0;
local_938 = 0;
local_934 = 0;
local_930 = 0;
local_92c = 0;
local_928 = 0;
local_924 = 0;
local_920 = 0;
local_91c = 0;
local_918 = 0;
local_914 = 0;
local_910 = 0;
local_90c = 0;
local_908 = 0;
local_948 = 1;
local_944 = 0;
local_94c = &PTR__NET_SignonState_002a1888;
local_8f4 = 0;
local_8f0 = 0;
local_8ec = 0;
local_8e8 = 0;
local_8e4 = 0;
local_8e0 = 0;
local_8dc = 0;
local_8d8 = 0;
local_8d4 = 0;
local_8d0 = 0;
local_900 = 3;
local_8f8 = 0;
/* try { // try from 0016e2f3 to 0016e311 has its CatchHandler @ 0016e416 */
NET_SignonState::WriteToBuffer((NET_SignonState *)&local_94c,local_a1c);
WriteMessages(this,'\x01',local_a1c);
local_94c = &PTR__NET_SignonState_002a1888;
local_8d4 = 0;
CUtlMemory<char,int>::Purge((CUtlMemory<char,int> *)&local_8e0);
local_8d0 = local_8e0;
CUtlMemory<char,int>::Purge((CUtlMemory<char,int> *)&local_8e0);
local_8e8 = 0;
CUtlMemory<char,int>::Purge((CUtlMemory<char,int> *)&local_8f4);
local_8e4 = local_8f4;
CUtlMemory<char,int>::Purge((CUtlMemory<char,int> *)&local_8f4);
local_94c = &PTR__INetMessage_002a1188;
local_9ac = &PTR__NET_SetConVar_002a1ca8;
local_954 = 0;
CUtlMemory<NetMessageCvar_t,int>::Purge((CUtlMemory<NetMessageCvar_t,int> *)&local_960);
local_950 = local_960;
CUtlMemory<NetMessageCvar_t,int>::Purge((CUtlMemory<NetMessageCvar_t,int> *)&local_960);
local_9ac = &PTR__INetMessage_002a1188;
local_a04 = &PTR__INetMessage_002a1188;
local_6c4 = &PTR__INetMessage_002a1188;
NET_FreePayload(puVar2);
if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
return;
}
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.