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 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.