DebugConstraints
0x00780c40 · 4219 bytes · __cdecl
_ZL16DebugConstraintsP11CBaseEntity
Decompiled
undefined (1 param)
/* DebugConstraints(CBaseEntity*) */
void DebugConstraints(CBaseEntity *param_1)
{
uint *puVar1;
int *piVar2;
int *piVar3;
int *piVar4;
int *piVar5;
int *piVar6;
int *piVar7;
int *piVar8;
int *piVar9;
int *piVar10;
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *pCVar11;
int iVar12;
code *pcVar13;
CBaseEntity *pCVar14;
void *pvVar15;
char cVar16;
ushort uVar17;
CBaseEntity *pCVar18;
uint uVar19;
undefined1 *puVar20;
ushort *puVar21;
int iVar22;
int *piVar23;
ushort uVar24;
undefined4 *puVar25;
int iVar26;
int local_178;
int local_16c;
int local_168;
int local_160;
int local_158;
undefined1 *local_154;
void **local_150;
char *local_14c;
undefined1 *local_148;
char *local_144;
uint local_140;
int local_138;
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *local_134;
undefined1 *local_130;
CBaseEntity *local_12c;
CBaseEntity *local_128;
CBaseEntity *local_124;
CBaseEntity *local_120;
CBaseEntity *local_11c;
CBaseEntity *local_118;
CBaseEntity *local_114;
CBaseEntity *local_110;
CBaseEntity *local_10c;
CBaseEntity *local_108;
CBaseEntity *local_104;
CBaseEntity *local_100;
CBaseEntity *local_fc;
CBaseEntity *local_f8;
CBaseEntity *local_f4;
IPhysicsObject *local_f0;
int *local_ec;
CBaseEntity *local_e8 [2];
CBaseEntity *local_e0;
int local_dc;
CBaseEntity *local_d8 [2];
CBaseEntity *local_d0;
int local_cc;
CBaseEntity *local_c8 [2];
CBaseEntity *local_c0;
int local_bc;
CBaseEntity *local_b8 [2];
CBaseEntity *local_b0;
int local_ac;
CBaseEntity *local_a8 [2];
CBaseEntity *local_a0 [2];
CBaseEntity *local_98 [2];
CBaseEntity *local_90 [2];
CBaseEntity *local_88 [2];
CBaseEntity *local_80 [2];
CBaseEntity *local_78 [2];
CBaseEntity *local_70 [2];
CBaseEntity *local_68 [2];
int local_60 [5];
code *local_4c;
void *local_48;
int local_44;
undefined4 local_40;
undefined2 local_3c;
undefined2 local_3a;
ushort local_38;
ushort local_36;
undefined4 local_34;
void *local_30;
undefined4 local_2c;
undefined4 local_28;
int local_24;
void *local_20;
piVar23 = (int *)&stack0xfffffe64;
if (param_1 != (CBaseEntity *)0x0) {
local_3c = 0xffff;
local_36 = 0xffff;
local_40 = 0;
local_3a = 0;
local_38 = 0xffff;
local_34 = 0;
local_28 = 0;
local_24 = 0;
local_4c = CDefOps<CBaseEntity*>::LessFunc;
local_44 = 0x40;
local_48 = malloc(0x400);
local_2c = 0x40;
local_30 = malloc(0x600);
local_20 = local_30;
/* try { // try from 00780ce5 to 00780d9b has its CatchHandler @ 00781b7a */
pCVar18 = (CBaseEntity *)
CGlobalEntityList::NextEnt((CGlobalEntityList *)gEntList,(CBaseEntity *)0x0);
if (pCVar18 != (CBaseEntity *)0x0) {
do {
cVar16 = GetConstraintAttachments(pCVar18,&local_f8,&local_f0);
if ((cVar16 != '\0') ||
(cVar16 = GetSpringAttachments(pCVar18,&local_f8,&local_f0), cVar16 != '\0')) {
local_12c = local_f8;
if (((local_f8 != (CBaseEntity *)0x0) &&
((*(int *)(pCVar18 + 0x30) == 0 || (pCVar18 != g_WorldEntity)))) &&
((*(int *)(local_f8 + 0x30) == 0 || (local_f8 != g_WorldEntity)))) {
local_e8[0] = pCVar18;
/* try { // try from 00781a67 to 00781b63 has its CatchHandler @ 00781b7a */
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_e8);
uVar19 = uVar19 & 0xffff;
if (uVar19 == 0xffff) {
local_dc = CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>::
InsertBefore((CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>
*)&local_30,local_24);
*(undefined1 *)((int)local_30 + local_dc * 0x18 + 0x15) = 1;
local_e0 = pCVar18;
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Insert((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)&local_e0);
uVar19 = uVar19 & 0xffff;
}
pCVar11 = (CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)
((int)local_30 + *(int *)((int)local_48 + uVar19 * 0x10 + 0xc) * 0x18);
iVar22 = *(int *)(pCVar11 + 0xc);
if (iVar22 < 1) {
LAB_00781ad0:
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(pCVar11,iVar22,&local_12c);
}
else if ((CBaseEntity *)**(undefined4 **)pCVar11 != local_12c) {
iVar26 = 0;
do {
iVar26 = iVar26 + 1;
if (iVar26 == iVar22) goto LAB_00781ad0;
} while (local_12c != (CBaseEntity *)(*(undefined4 **)pCVar11)[iVar26]);
if (iVar26 < 0) goto LAB_00781ad0;
}
}
local_128 = local_f4;
if (((local_f4 != (CBaseEntity *)0x0) &&
((*(int *)(pCVar18 + 0x30) == 0 || (pCVar18 != g_WorldEntity)))) &&
((*(int *)(local_f4 + 0x30) == 0 || (local_f4 != g_WorldEntity)))) {
local_d8[0] = pCVar18;
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_d8);
uVar19 = uVar19 & 0xffff;
if (uVar19 == 0xffff) {
local_cc = CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>::
InsertBefore((CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>
*)&local_30,local_24);
*(undefined1 *)((int)local_30 + local_cc * 0x18 + 0x15) = 1;
local_d0 = pCVar18;
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Insert((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)&local_d0);
uVar19 = uVar19 & 0xffff;
}
pCVar11 = (CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)
((int)local_30 + *(int *)((int)local_48 + uVar19 * 0x10 + 0xc) * 0x18);
iVar22 = *(int *)(pCVar11 + 0xc);
if (iVar22 < 1) {
LAB_007817fc:
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(pCVar11,iVar22,&local_128);
}
else if ((CBaseEntity *)**(undefined4 **)pCVar11 != local_128) {
iVar26 = 0;
do {
iVar26 = iVar26 + 1;
if (iVar26 == iVar22) goto LAB_007817fc;
} while ((CBaseEntity *)(*(undefined4 **)pCVar11)[iVar26] != local_128);
if (iVar26 < 0) goto LAB_007817fc;
}
}
pCVar14 = local_f8;
local_124 = pCVar18;
if (((local_f8 != (CBaseEntity *)0x0) &&
((*(int *)(local_f8 + 0x30) == 0 || (local_f8 != g_WorldEntity)))) &&
((*(int *)(pCVar18 + 0x30) == 0 || (pCVar18 != g_WorldEntity)))) {
local_c8[0] = local_f8;
/* try { // try from 007816d1 to 00781985 has its CatchHandler @ 00781b7a */
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_c8);
uVar19 = uVar19 & 0xffff;
if (uVar19 == 0xffff) {
local_bc = CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>::
InsertBefore((CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>
*)&local_30,local_24);
local_c0 = pCVar14;
*(undefined1 *)((int)local_30 + local_bc * 0x18 + 0x15) = 0;
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Insert((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)&local_c0);
uVar19 = uVar19 & 0xffff;
}
pCVar11 = (CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)
((int)local_30 + *(int *)((int)local_48 + uVar19 * 0x10 + 0xc) * 0x18);
iVar22 = *(int *)(pCVar11 + 0xc);
if (iVar22 < 1) {
LAB_0078173c:
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(pCVar11,iVar22,&local_124);
}
else if ((CBaseEntity *)**(int **)pCVar11 != local_124) {
iVar26 = 0;
do {
iVar26 = iVar26 + 1;
if (iVar26 == iVar22) goto LAB_0078173c;
} while (local_124 != (CBaseEntity *)(*(int **)pCVar11)[iVar26]);
if (iVar26 < 0) goto LAB_0078173c;
}
}
pCVar14 = local_f4;
local_120 = pCVar18;
if (((local_f4 != (CBaseEntity *)0x0) &&
((*(int *)(local_f4 + 0x30) == 0 || (local_f4 != g_WorldEntity)))) &&
((*(int *)(pCVar18 + 0x30) == 0 || (pCVar18 != g_WorldEntity)))) {
local_b8[0] = local_f4;
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_b8);
uVar19 = uVar19 & 0xffff;
if (uVar19 == 0xffff) {
/* try { // try from 007819d2 to 00781a01 has its CatchHandler @ 00781b7a */
local_ac = CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>::
InsertBefore((CUtlVector<CConstraintFloodEntry,CUtlMemory<CConstraintFloodEntry,int>>
*)&local_30,local_24);
local_b0 = pCVar14;
*(undefined1 *)((int)local_30 + local_ac * 0x18 + 0x15) = 0;
uVar19 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Insert((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)&local_b0);
uVar19 = uVar19 & 0xffff;
}
pCVar11 = (CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)
((int)local_30 + *(int *)((int)local_48 + uVar19 * 0x10 + 0xc) * 0x18);
iVar22 = *(int *)(pCVar11 + 0xc);
if (iVar22 < 1) {
LAB_00781970:
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(pCVar11,iVar22,&local_120);
}
else if ((CBaseEntity *)**(int **)pCVar11 != local_120) {
iVar26 = 0;
do {
iVar26 = iVar26 + 1;
if (iVar26 == iVar22) goto LAB_00781970;
} while ((CBaseEntity *)(*(int **)pCVar11)[iVar26] != local_120);
if (iVar26 < 0) goto LAB_00781970;
}
}
}
pCVar18 = (CBaseEntity *)CGlobalEntityList::NextEnt((CGlobalEntityList *)gEntList,pCVar18);
} while (pCVar18 != (CBaseEntity *)0x0);
}
local_150 = &local_30;
local_60[0] = 0;
local_60[1] = 0;
local_60[2] = 0;
local_11c = param_1;
local_a8[0] = param_1;
local_60[3] = 0;
local_60[4] = 0;
/* try { // try from 00780dee to 00781692 has its CatchHandler @ 00781cc3 */
uVar17 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_a8);
if ((uVar17 != 0xffff) &&
(piVar2 = (int *)((int)local_30 + *(int *)((int)local_48 + (uint)uVar17 * 0x10 + 0xc) * 0x18)
, (char)piVar2[5] == '\0')) {
if (*(char *)((int)piVar2 + 0x15) != '\0') {
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
((CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)local_60,local_60[3],
&local_11c);
}
local_134 = (CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)local_60;
local_158 = 0;
*(undefined1 *)(piVar2 + 5) = 1;
if (0 < piVar2[3]) {
do {
local_118 = *(CBaseEntity **)(*piVar2 + local_158 * 4);
local_a0[0] = local_118;
uVar17 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_a0);
if ((uVar17 != 0xffff) &&
(piVar3 = (int *)((int)local_30 +
*(int *)((int)local_48 + (uint)uVar17 * 0x10 + 0xc) * 0x18),
(char)piVar3[5] == '\0')) {
if (*(char *)((int)piVar3 + 0x15) != '\0') {
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(local_134,local_60[3],&local_118);
}
local_160 = 0;
*(undefined1 *)(piVar3 + 5) = 1;
if (0 < piVar3[3]) {
do {
local_114 = *(CBaseEntity **)(*piVar3 + local_160 * 4);
local_98[0] = local_114;
uVar17 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_98);
if ((uVar17 != 0xffff) &&
(piVar4 = (int *)((int)local_30 +
*(int *)((int)local_48 + (uint)uVar17 * 0x10 + 0xc) * 0x18),
(char)piVar4[5] == '\0')) {
if (*(char *)((int)piVar4 + 0x15) != '\0') {
/* try { // try from 00781c1f to 00781d6b has its CatchHandler @ 00781cc3 */
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(local_134,local_60[3],&local_114);
}
local_168 = 0;
*(undefined1 *)(piVar4 + 5) = 1;
if (0 < piVar4[3]) {
do {
local_110 = *(CBaseEntity **)(*piVar4 + local_168 * 4);
local_90[0] = local_110;
uVar17 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_90);
if ((uVar17 != 0xffff) &&
(piVar5 = (int *)((int)local_30 +
*(int *)((int)local_48 + (uint)uVar17 * 0x10 + 0xc) * 0x18
), (char)piVar5[5] == '\0')) {
if (*(char *)((int)piVar5 + 0x15) != '\0') {
/* try { // try from 00781a24 to 00781a28 has its CatchHandler @ 00781cc3 */
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(local_134,local_60[3],&local_110);
}
local_16c = 0;
*(undefined1 *)(piVar5 + 5) = 1;
if (0 < piVar5[3]) {
do {
local_10c = *(CBaseEntity **)(*piVar5 + local_16c * 4);
local_88[0] = local_10c;
uVar17 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_88);
if ((uVar17 != 0xffff) &&
(piVar6 = (int *)((int)local_30 +
*(int *)((int)local_48 + (uint)uVar17 * 0x10 + 0xc)
* 0x18), (char)piVar6[5] == '\0')) {
if (*(char *)((int)piVar6 + 0x15) != '\0') {
/* try { // try from 007819a5 to 007819a9 has its CatchHandler @ 00781cc3 */
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
(local_134,local_60[3],&local_10c);
}
local_178 = 0;
*(undefined1 *)(piVar6 + 5) = 1;
if (0 < piVar6[3]) {
do {
local_108 = *(CBaseEntity **)(*piVar6 + local_178 * 4);
local_80[0] = local_108;
uVar17 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((
CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_80);
if ((uVar17 != 0xffff) &&
(piVar7 = (int *)((int)local_30 +
*(int *)((int)local_48 +
(uint)uVar17 * 0x10 + 0xc) * 0x18),
(char)piVar7[5] == '\0')) {
if (*(char *)((int)piVar7 + 0x15) != '\0') {
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::
InsertBefore(local_134,local_60[3],&local_108);
}
local_148 = (undefined1 *)0x0;
*(undefined1 *)(piVar7 + 5) = 1;
if (0 < piVar7[3]) {
do {
local_104 = *(CBaseEntity **)(*piVar7 + (int)local_148 * 4);
local_78[0] = local_104;
uVar17 = CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((
CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_78);
if ((uVar17 != 0xffff) &&
(piVar8 = (int *)((int)local_30 +
*(int *)((int)local_48 +
(uint)uVar17 * 0x10 + 0xc) *
0x18), (char)piVar8[5] == '\0')) {
if (*(char *)((int)piVar8 + 0x15) != '\0') {
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::
InsertBefore(local_134,local_60[3],&local_104);
}
local_140 = 0;
*(undefined1 *)(piVar8 + 5) = 1;
if (0 < piVar8[3]) {
do {
local_100 = *(CBaseEntity **)(*piVar8 + local_140 * 4)
;
local_70[0] = local_100;
uVar17 =
CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((
CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_70);
if ((uVar17 != 0xffff) &&
(piVar9 = (int *)((int)local_30 +
*(int *)((int)local_48 +
(uint)uVar17 * 0x10 + 0xc)
* 0x18), (char)piVar9[5] == '\0'))
{
if (*(char *)((int)piVar9 + 0x15) != '\0') {
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>
::InsertBefore(local_134,local_60[3],&local_100);
}
local_138 = 0;
*(undefined1 *)(piVar9 + 5) = 1;
if (0 < piVar9[3]) {
do {
local_fc = *(CBaseEntity **)
(*piVar9 + local_138 * 4);
local_68[0] = local_fc;
uVar17 =
CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Find((
CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
*)&local_4c,(Node_t *)local_68);
if ((uVar17 != 0xffff) &&
(piVar10 = (int *)((int)local_30 +
*(int *)((int)local_48 +
(uint)uVar17 * 0x10 +
0xc) * 0x18),
(char)piVar10[5] == '\0')) {
if (*(char *)((int)piVar10 + 0x15) != '\0') {
CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>
::InsertBefore(local_134,local_60[3],&local_fc);
}
iVar22 = 0;
*(undefined1 *)(piVar10 + 5) = 1;
if (0 < piVar10[3]) {
do {
CConstraintFloodList::BuildGraphFromEntity
((CConstraintFloodList *)&local_4c,
*(CBaseEntity **)
(*piVar10 + iVar22 * 4),
(CUtlVector *)local_134);
iVar22 = iVar22 + 1;
} while (iVar22 < piVar10[3]);
}
}
local_138 = local_138 + 1;
} while (local_138 < piVar9[3]);
}
}
local_140 = local_140 + 1;
} while ((int)local_140 < piVar8[3]);
}
}
local_148 = (undefined1 *)((int)local_148 + 1);
} while ((int)local_148 < piVar7[3]);
}
}
local_178 = local_178 + 1;
} while (local_178 < piVar6[3]);
}
}
local_16c = local_16c + 1;
} while (local_16c < piVar5[3]);
}
}
local_168 = local_168 + 1;
} while (local_168 < piVar4[3]);
}
}
local_160 = local_160 + 1;
} while (local_160 < piVar3[3]);
}
}
local_158 = local_158 + 1;
} while (local_158 < piVar2[3]);
}
}
local_134 = (CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)local_60;
if (0 < local_60[3]) {
iVar22 = 0;
piVar23 = (int *)&stack0xfffffe64;
do {
iVar26 = iVar22 * 4;
piVar23[2] = (int)&local_f0;
piVar23[1] = (int)&local_f8;
*piVar23 = *(undefined4 *)(local_60[0] + iVar22 * 4);
piVar23[-1] = 0x7813c1;
cVar16 = GetConstraintAttachments
((CBaseEntity *)*piVar23,(CBaseEntity **)piVar23[1],
(IPhysicsObject **)piVar23[2]);
if (cVar16 == '\0') {
piVar23[2] = (int)&local_f0;
piVar23[1] = (int)&local_f8;
*piVar23 = *(undefined4 *)(local_60[0] + iVar26);
piVar23[-1] = 0x781cb0;
GetSpringAttachments
((CBaseEntity *)*piVar23,(CBaseEntity **)piVar23[1],
(IPhysicsObject **)piVar23[2]);
}
if (local_f8 == (CBaseEntity *)0x0) {
local_140 = 0;
local_148 = &DAT_00d539c2;
local_144 = "world";
}
else {
local_144 = "";
if (*(char **)(local_f8 + 0x7c) != (char *)0x0) {
local_144 = *(char **)(local_f8 + 0x7c);
}
iVar12 = *(int *)local_f8;
piVar23[1] = (int)local_f8;
*piVar23 = (int)&local_130;
pcVar13 = *(code **)(iVar12 + 0x20);
piVar23[-1] = 0x7813fc;
(*pcVar13)();
local_148 = &DAT_00d539c2;
if (local_130 != (undefined1 *)0x0) {
local_148 = local_130;
}
iVar12 = *(int *)local_f0;
piVar23[-1] = (int)local_f0;
pcVar13 = *(code **)(iVar12 + 0x58);
piVar23[-2] = 0x781423;
local_140 = (*pcVar13)();
local_140 = local_140 & 0xffff;
piVar23 = piVar23 + -1;
}
if (local_f4 == (CBaseEntity *)0x0) {
local_154 = &DAT_00d539c2;
uVar19 = 0;
local_14c = "world";
}
else {
local_14c = "";
if (*(char **)(local_f4 + 0x7c) != (char *)0x0) {
local_14c = *(char **)(local_f4 + 0x7c);
}
iVar12 = *(int *)local_f4;
piVar23[1] = (int)local_f4;
*piVar23 = (int)&local_130;
pcVar13 = *(code **)(iVar12 + 0x20);
piVar23[-1] = 0x78145f;
(*pcVar13)();
local_154 = &DAT_00d539c2;
if (local_130 != (undefined1 *)0x0) {
local_154 = local_130;
}
iVar12 = *local_ec;
piVar23[-1] = (int)local_ec;
pcVar13 = *(code **)(iVar12 + 0x58);
piVar23[-2] = 0x781486;
uVar19 = (*pcVar13)();
uVar19 = uVar19 & 0xffff;
piVar23 = piVar23 + -1;
}
puVar20 = *(undefined1 **)(*(int *)(local_60[0] + iVar26) + 0x7c);
piVar23[7] = uVar19;
*piVar23 = (int)"**********************\n%s connects %s(%s:%d) to %s(%s:%d)\n";
if (puVar20 == (undefined1 *)0x0) {
puVar20 = &DAT_00d539c2;
}
piVar23[6] = (int)local_154;
piVar23[1] = (int)puVar20;
piVar23[5] = (int)local_14c;
piVar23[4] = local_140;
piVar23[3] = (int)local_148;
piVar23[2] = (int)local_144;
piVar23[-1] = 0x7814e2;
Msg();
*piVar23 = *(undefined4 *)(local_60[0] + iVar26);
piVar23[-1] = 0x7814f0;
DebugConstraint((CBaseEntity *)*piVar23);
iVar22 = iVar22 + 1;
puVar1 = (uint *)(*(int *)(local_60[0] + iVar26) + 0x110);
*puVar1 = *puVar1 | 5;
} while (iVar22 < local_60[3]);
}
local_60[3] = 0;
*piVar23 = (int)local_134;
piVar23[-1] = 0x78151e;
CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar23);
iVar22 = local_60[0];
*piVar23 = (int)local_134;
local_60[4] = iVar22;
piVar23[-1] = 0x78152c;
CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar23);
iVar22 = local_24 + -1;
if (-1 < iVar22) {
iVar26 = iVar22 * 0x18;
do {
iVar22 = iVar22 + -1;
puVar25 = (undefined4 *)((int)local_30 + iVar26);
iVar26 = iVar26 + -0x18;
puVar25[3] = 0;
*piVar23 = (int)puVar25;
piVar23[-1] = 0x781554;
CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar23);
puVar25[4] = *puVar25;
*piVar23 = (int)puVar25;
piVar23[-1] = 0x781561;
CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar23);
} while (iVar22 != -1);
}
local_24 = 0;
*piVar23 = (int)local_150;
piVar23[-1] = 0x78157b;
CUtlMemory<CConstraintFloodEntry,int>::Purge((CUtlMemory<CConstraintFloodEntry,int> *)*piVar23);
pvVar15 = local_30;
*piVar23 = (int)local_150;
local_20 = pvVar15;
piVar23[-1] = 0x781589;
CUtlMemory<CConstraintFloodEntry,int>::Purge((CUtlMemory<CConstraintFloodEntry,int> *)*piVar23);
if (local_36 != 0xffff) {
iVar22 = 0;
uVar17 = local_36;
if (0 < local_44) {
do {
uVar24 = (ushort)iVar22;
if ((iVar22 < local_44) && (uVar24 <= uVar17)) {
if (CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Links(unsigned_short)::s_Sentinel == '\0') {
*piVar23 = (int)&CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Links(unsigned_short)::s_Sentinel;
piVar23[-1] = 0x781d18;
iVar26 = __cxa_guard_acquire();
if (iVar26 != 0) {
*piVar23 = (int)&CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Links(unsigned_short)::s_Sentinel;
CUtlRBTree<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short,CUtlMap<CBaseEntity*,int,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
::Links(unsigned_short)::s_Sentinel = 0xffff;
DAT_00f464ca = 0xffff;
DAT_00f464cc = 0xffff;
piVar23[-1] = 0x781d4b;
__cxa_guard_release();
}
}
puVar21 = (ushort *)((int)local_48 + iVar22 * 0x10);
uVar17 = local_36;
if (uVar24 != *puVar21) {
puVar21[1] = local_38;
*(ushort *)((int)local_48 + iVar22 * 0x10) = uVar24;
local_38 = uVar24;
}
}
} while (((uVar24 != uVar17) && ((int)(iVar22 + 1U & 0xffff) < local_44)) &&
(iVar22 = iVar22 + 1, iVar22 != 0xffff));
}
local_3c = 0xffff;
local_3a = 0;
}
*piVar23 = (int)&local_48;
local_38 = 0xffff;
piVar23[-1] = 0x7815eb;
CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
*)*piVar23);
*piVar23 = (int)&local_48;
local_36 = 0xffff;
piVar23[-1] = 0x7815fc;
CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<CBaseEntity*,int,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
*)*piVar23);
}
return;
}
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.