L L4D2node

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 into addons/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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)