L L4D2node

CNetChan::MapPerMessageProcessingStats_t::DumpSocketProcessingStats

0x001b4fb0 · 2266 bytes · __cdecl

_ZNK8CNetChan30MapPerMessageProcessingStats_t25DumpSocketProcessingStatsEd

Decompiled

undefined (1 param)

/* CNetChan::MapPerMessageProcessingStats_t::DumpSocketProcessingStats(double) const */

void CNetChan::MapPerMessageProcessingStats_t::DumpSocketProcessingStats(double param_1)

{
  char *pcVar1;
  void *pvVar2;
  int *piVar3;
  int iVar4;
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  *pCVar5;
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  *pCVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int> *pCVar10;
  CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int> *this;
  int iVar11;
  undefined4 *puVar12;
  double dVar13;
  double dVar14;
  double dVar15;
  double dVar16;
  double dVar17;
  undefined8 uVar18;
  undefined4 in_stack_0000000c;
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  *local_14c;
  int local_148;
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  *local_144;
  uint local_140;
  undefined8 local_13c;
  int local_120;
  undefined4 local_11c;
  int local_118;
  undefined4 local_114;
  undefined4 local_110;
  int local_10c;
  undefined8 local_108;
  int local_100;
  undefined4 local_fc;
  undefined4 local_f8;
  int local_f4;
  undefined8 local_f0;
  int local_e8;
  char *local_e4;
  char *local_e0;
  char *local_dc;
  char *local_d8;
  char *local_d4;
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_d0 [4];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_cc [4];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  aCStack_c8 [4];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_c4 [12];
  CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int> local_b8 [12];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_ac [36];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_88 [36];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_64 [36];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_40 [4];
  CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int> local_3c [32];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_1c [4];
  CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
  local_18 [8];
  
  pcVar1 = ", detailed dump disabled";
  if (0 < *(int *)(net_chan_stats_dump_top_msgs._28_4_ + 0x30)) {
    pcVar1 = "";
  }
  Msg(" %u message types recorded%s\n",*(undefined4 *)(param_1._0_4_ + 0x14),pcVar1);
  if ((*(int *)(net_chan_stats_dump_top_msgs._28_4_ + 0x30) < 1) ||
     (iVar7 = *(int *)(param_1._0_4_ + 0x14), iVar7 == 0)) {
    return;
  }
  local_e4 = "Messages";
  local_e0 = "CPU cost";
  local_dc = "CPU/msg";
  local_d8 = "Traffic";
  local_d4 = "Bytes/msg";
  pCVar5 = local_d0;
  do {
    *(undefined4 *)pCVar5 = 0;
    pCVar6 = pCVar5 + 0x24;
    *(undefined4 *)(pCVar5 + ((int)local_cc - (int)local_d0)) = 0;
    *(undefined4 *)(pCVar5 + (int)(local_cc + (4 - (int)local_d0))) = 0;
    *(undefined4 *)(pCVar5 + (int)(local_cc + (8 - (int)local_d0))) = 0;
    *(undefined4 *)(pCVar5 + 0x10) = 0xffffffff;
    *(undefined4 *)(pCVar5 + 0x14) = 0;
    *(undefined4 *)(pCVar5 + 0x18) = 0xffffffff;
    *(undefined4 *)(pCVar5 + 0x1c) = 0xffffffff;
    *(undefined4 *)(pCVar5 + 0x20) = 0;
    pCVar5 = pCVar6;
  } while (pCVar6 != local_1c);
  pCVar5 = local_cc;
  while( true ) {
    if (*(int *)(pCVar5 + -4) == 0) {
      *(code **)(pCVar5 + -4) = CDefOps<unsigned_long_long>::LessFunc;
    }
    if ((*(int *)(pCVar5 + ((int)local_cc - (int)local_d0)) < iVar7) && (-1 < *(int *)(pCVar5 + 8)))
    {
      pvVar2 = *(void **)(pCVar5 + (int)(local_d0 + -(int)local_d0));
      *(int *)(pCVar5 + ((int)local_cc - (int)local_d0)) = iVar7;
      if (pvVar2 == (void *)0x0) {
        pvVar2 = malloc(iVar7 * 0x1c);
        *(void **)(pCVar5 + (int)(local_d0 + -(int)local_d0)) = pvVar2;
      }
      else {
        pvVar2 = realloc(pvVar2,iVar7 * 0x1c);
        *(void **)(pCVar5 + (int)(local_d0 + -(int)local_d0)) = pvVar2;
      }
    }
    pCVar5 = pCVar5 + 0x24;
    if (pCVar5 == local_18) break;
    iVar7 = *(int *)(param_1._0_4_ + 0x14);
  }
  if (0 < *(int *)(param_1._0_4_ + 8)) {
    iVar11 = 0;
    iVar7 = 0;
    do {
      while (*(int *)(param_1._0_4_ + 0x1c) < iVar7) {
LAB_001b5138:
        iVar7 = iVar7 + 1;
        iVar11 = iVar11 + 0x28;
        if (*(int *)(param_1._0_4_ + 8) <= iVar7) goto LAB_001b52da;
      }
      if (CUtlRBTree<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int,CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int>,int>>
          ::Links(int)::s_Sentinel == '\0') {
        iVar4 = __cxa_guard_acquire(&CUtlRBTree<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int,CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int>,int>>
                                     ::Links(int)::s_Sentinel);
        if (iVar4 != 0) {
          CUtlRBTree<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int,CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int>,int>>
          ::Links(int)::s_Sentinel = 0xffffffff;
          DAT_0034169c = 0xffffffff;
          DAT_003416a0 = 0xffffffff;
          __cxa_guard_release(&CUtlRBTree<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int,CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,CNetChan::MessageProcessingStats_t,int>::Node_t,int>,int>>
                               ::Links(int)::s_Sentinel);
        }
      }
      piVar3 = (int *)(*(int *)(param_1._0_4_ + 4) + iVar11);
      if (*piVar3 == iVar7) goto LAB_001b5138;
      local_120 = piVar3[8];
      local_11c = 0;
      local_118 = iVar7;
                    /* try { // try from 001b519a to 001b5539 has its CatchHandler @ 001b58ce */
      CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
      ::Insert(local_d0,(Node_t *)&local_120);
      local_110 = *(undefined4 *)(*(int *)(param_1._0_4_ + 4) + 0x1c + iVar11);
      local_114 = *(undefined4 *)(*(int *)(param_1._0_4_ + 4) + 0x18 + iVar11);
      local_10c = iVar7;
      CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
      ::Insert(local_ac,(Node_t *)&local_114);
      uVar18 = 0;
      iVar4 = *(int *)(param_1._0_4_ + 4) + iVar11;
      if (*(int *)(iVar4 + 0x20) != 0) {
        uVar18 = __udivdi3(*(undefined4 *)(iVar4 + 0x18),*(undefined4 *)(iVar4 + 0x1c),
                           *(int *)(iVar4 + 0x20),0);
      }
      local_100 = iVar7;
      local_108 = uVar18;
      CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
      ::Insert(local_88,(Node_t *)&local_108);
      local_f8 = 0;
      local_fc = *(undefined4 *)(*(int *)(param_1._0_4_ + 4) + 0x24 + iVar11);
      local_f4 = iVar7;
      CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
      ::Insert(local_64,(Node_t *)&local_fc);
      uVar18 = 0;
      iVar8 = *(int *)(param_1._0_4_ + 4) + iVar11;
      iVar4 = *(int *)(iVar8 + 0x20);
      if (iVar4 != 0) {
        uVar9 = *(uint *)(iVar8 + 0x24);
        uVar18 = __udivdi3(uVar9 << 0x14,uVar9 >> 0xc,iVar4,0);
      }
      local_e8 = iVar7;
      local_f0 = uVar18;
      CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
      ::Insert(local_40,(Node_t *)&local_f0);
      iVar7 = iVar7 + 1;
      iVar11 = iVar11 + 0x28;
    } while (iVar7 < *(int *)(param_1._0_4_ + 8));
  }
LAB_001b52da:
  pcVar1 = "Messages";
  local_144 = local_d0;
  dVar17 = 1.0 / (double)CONCAT44(in_stack_0000000c,param_1._4_4_);
  local_14c = (CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
               *)&local_e0;
  do {
    iVar7 = *(int *)(net_chan_stats_dump_top_msgs._28_4_ + 0x30);
    if (*(int *)(local_144 + 0x14) <= *(int *)(net_chan_stats_dump_top_msgs._28_4_ + 0x30)) {
      iVar7 = *(int *)(local_144 + 0x14);
    }
    Msg("  %s top %u:\n",pcVar1,iVar7);
    iVar7 = *(int *)(local_144 + 0x10);
    while( true ) {
      if (CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
          ::Links(int)::s_Sentinel == '\0') {
        iVar11 = __cxa_guard_acquire(&CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                                      ::Links(int)::s_Sentinel);
        if (iVar11 != 0) {
          CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
          ::Links(int)::s_Sentinel = 0xffffffff;
          DAT_00341684 = -1;
          DAT_00341688 = 0xffffffff;
          __cxa_guard_release(&CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                               ::Links(int)::s_Sentinel);
        }
      }
      iVar11 = DAT_00341684;
      if (iVar7 != -1) {
        iVar11 = *(int *)(iVar7 * 0x1c + *(int *)(local_144 + 4) + 4);
      }
      if (iVar11 == -1) break;
      if (CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
          ::Links(int)::s_Sentinel == '\0') {
        iVar11 = __cxa_guard_acquire(&CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                                      ::Links(int)::s_Sentinel);
        if (iVar11 != 0) {
          CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
          ::Links(int)::s_Sentinel = 0xffffffff;
          DAT_00341684 = -1;
          DAT_00341688 = 0xffffffff;
          __cxa_guard_release(&CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                               ::Links(int)::s_Sentinel);
        }
        if (iVar7 != -1) goto LAB_001b5384;
LAB_001b570c:
        puVar12 = &CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                   ::Links(int)::s_Sentinel;
      }
      else {
        if (iVar7 == -1) goto LAB_001b570c;
LAB_001b5384:
        puVar12 = (undefined4 *)(iVar7 * 0x1c + *(int *)(local_144 + 4));
      }
      iVar7 = puVar12[1];
    }
    local_148 = 0;
    while (iVar7 != -1) {
      iVar11 = *(int *)(param_1._0_4_ + 4) +
               *(int *)(iVar7 * 0x1c + *(int *)(local_144 + 4) + 0x18) * 0x28;
      if ((double)CONCAT44(in_stack_0000000c,param_1._4_4_) <= 1.0) {
        local_140 = *(uint *)(iVar11 + 0x24);
        dVar13 = 0.0;
        uVar9 = *(uint *)(iVar11 + 0x20);
        local_13c = *(longlong *)(iVar11 + 0x18);
        dVar14 = dVar13;
        dVar16 = dVar13;
      }
      else {
        local_140 = *(uint *)(iVar11 + 0x24);
        local_13c = *(longlong *)(iVar11 + 0x18);
        dVar16 = (double)*(longlong *)(iVar11 + 0x18);
        if (*(int *)(iVar11 + 0x1c) < 0) {
          dVar16 = dVar16 + 1.8446744073709552e+19;
        }
        uVar9 = *(uint *)(iVar11 + 0x20);
        dVar13 = ((double)(*(int *)(iVar11 + 0x20) + -0x80000000) + 2147483648.0) * dVar17;
        dVar14 = ((double)(int)(local_140 + 0x80000000) + 2147483648.0) * dVar17;
        dVar16 = dVar16 * dVar17;
      }
      if (uVar9 == 0) {
        dVar15 = 0.0;
        uVar18 = 0;
      }
      else {
        dVar15 = (double)(((float)(local_140 >> 0x10) * 65536.0 + (float)(local_140 & 0xffff)) /
                         ((float)(uVar9 >> 0x10) * 65536.0 + (float)(uVar9 & 0xffff)));
        uVar18 = __udivdi3((undefined4)local_13c,local_13c._4_4_,uVar9,0);
      }
      pcVar1 = "   %u:%u  ---  %u msgs, %llu usec, %llu usec/msg, %u bytes, %.3f bytes/msg\n";
      if (1.0 < (double)CONCAT44(in_stack_0000000c,param_1._4_4_)) {
        pcVar1 = 
        "   %u:%u  ---  %u msgs, %llu usec, %llu usec/msg, %u bytes, %.3f bytes/msg  =  %.3f msg/sec, %.3f usec/sec, %.3f bytes/sec\n"
        ;
      }
      Msg(pcVar1,*(undefined4 *)(iVar11 + 0x10),*(undefined4 *)(iVar11 + 0x14),uVar9,
          (undefined4)local_13c,local_13c._4_4_,uVar18,local_140,dVar15,dVar13,dVar16,dVar14);
      local_148 = local_148 + 1;
      if (*(int *)(net_chan_stats_dump_top_msgs._28_4_ + 0x30) <= local_148) break;
      iVar7 = CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
              ::PrevInorder(local_144,iVar7);
    }
    local_144 = local_144 + 0x24;
    if (local_14c == local_d0) {
      this = local_3c;
      do {
        if (*(int *)(this + (int)(local_cc + (0x14 - (int)local_d0))) != -1) {
          iVar11 = 0;
          iVar7 = 0;
          if (0 < *(int *)(this + 4)) {
            do {
              if ((iVar7 < *(int *)(this + 4)) &&
                 (iVar7 <= *(int *)(this + (int)(local_cc + (0x14 - (int)local_d0))))) {
                if (CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                    ::Links(int)::s_Sentinel == '\0') {
                  iVar4 = __cxa_guard_acquire(&CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                                               ::Links(int)::s_Sentinel);
                  if (iVar4 != 0) {
                    CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                    ::Links(int)::s_Sentinel = 0xffffffff;
                    DAT_00341684 = -1;
                    DAT_00341688 = 0xffffffff;
                    __cxa_guard_release(&CUtlRBTree<CUtlMap<unsigned_long_long,int,int>::Node_t,int,CUtlMap<unsigned_long_long,int,int>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>>
                                         ::Links(int)::s_Sentinel);
                  }
                }
                if (*(int *)(*(int *)this + iVar11) != iVar7) {
                  ((int *)(*(int *)this + iVar11))[1] = *(int *)(this + 0x14);
                  *(int *)(*(int *)this + iVar11) = iVar7;
                  *(int *)(this + 0x14) = iVar7;
                }
              }
              do {
                if (((iVar7 == *(int *)(this + 0x18)) || (iVar7 = iVar7 + 1, iVar7 < 0)) ||
                   (*(int *)(this + 4) <= iVar7)) goto LAB_001b5650;
                iVar11 = iVar11 + 0x1c;
              } while (iVar7 < 0);
            } while( true );
          }
LAB_001b5650:
          *(undefined4 *)(this + 0xc) = 0xffffffff;
          *(undefined4 *)(this + 0x10) = 0;
        }
        *(undefined4 *)(this + 0x14) = 0xffffffff;
        CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>::Purge
                  (this);
        *(undefined4 *)(this + 0x18) = 0xffffffff;
        pCVar10 = this + -0x24;
        CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int>::Purge
                  (this);
        this = pCVar10;
        if (pCVar10 ==
            (CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,int,int>::Node_t,int>,int> *)
            &local_f0) {
          return;
        }
      } while( true );
    }
    pcVar1 = *(char **)local_14c;
    local_14c = local_14c + 4;
  } while( true );
}

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)