L L4D2node

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