L L4D2node

CDirector::~CDirector

0x00886090 · 3754 bytes · __thiscall

_ZN9CDirectorD2Ev

Decompiled

undefined (1 param)

/* CDirector::~CDirector() */

void __thiscall CDirector::~CDirector(CDirector *this)

{
  CDirector *pCVar1;
  undefined4 *puVar2;
  void *__ptr;
  int *piVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  CUtlMemory<CHandle<CBaseEntity>,int> *this_00;
  int iVar7;
  int iVar8;
  bool bVar9;
  int local_2c;
  int local_28;
  CDirector *local_24;
  
  *(undefined ***)this = &PTR__CDirector_00ce1108;
  KeyValues::deleteThis();
  operator_delete(*(void **)(this + 0x628));
  puVar2 = *(undefined4 **)(this + 0x62c);
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = &PTR_Reset_00ce4550;
    CUtlRBTree<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char,CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char>,unsigned_char>>
    ::RemoveAll((CUtlRBTree<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char,CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char>,unsigned_char>>
                 *)(puVar2 + 0x111));
    *(undefined1 *)((int)puVar2 + 0x456) = 0xff;
    CUtlMemory<UtlRBTreeNode_t<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char>,unsigned_char>
    ::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char>,unsigned_char>
             *)(puVar2 + 0x112));
    *(undefined1 *)((int)puVar2 + 0x457) = 0xff;
    CUtlMemory<UtlRBTreeNode_t<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char>,unsigned_char>
    ::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<CHandle<CBaseEntity>,scavenge_cache_entry_t,unsigned_char>::Node_t,unsigned_char>,unsigned_char>
             *)(puVar2 + 0x112));
    puVar2[0x10f] = 0;
    CUtlMemory<CHandle<CWeaponSpawnConfigurable>,int>::Purge
              ((CUtlMemory<CHandle<CWeaponSpawnConfigurable>,int> *)(puVar2 + 0x10c));
    puVar2[0x110] = puVar2[0x10c];
    CUtlMemory<CHandle<CWeaponSpawnConfigurable>,int>::Purge
              ((CUtlMemory<CHandle<CWeaponSpawnConfigurable>,int> *)(puVar2 + 0x10c));
    puVar2[0x10a] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x107));
    puVar2[0x10b] = puVar2[0x107];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x107));
    local_28 = puVar2[0x105] + -1;
    local_2c = local_28 * 0x94;
    if (-1 < local_28) {
      do {
        iVar4 = local_2c + puVar2[0x102];
        iVar7 = *(int *)(iVar4 + 0x8c) + -1;
        if (-1 < iVar7) {
          iVar8 = iVar7 * 0x1c;
          do {
            iVar7 = iVar7 + -1;
            iVar6 = *(int *)(iVar4 + 0x80) + iVar8;
            iVar8 = iVar8 + -0x1c;
            *(undefined4 *)(iVar6 + 0x14) = 0;
            CUtlMemory<CDirectorItemManager::ItemRestoreInfoInstance,int>::Purge
                      ((CUtlMemory<CDirectorItemManager::ItemRestoreInfoInstance,int> *)(iVar6 + 8))
            ;
            *(undefined4 *)(iVar6 + 0x18) = *(undefined4 *)(iVar6 + 8);
            CUtlMemory<CDirectorItemManager::ItemRestoreInfoInstance,int>::Purge
                      ((CUtlMemory<CDirectorItemManager::ItemRestoreInfoInstance,int> *)(iVar6 + 8))
            ;
          } while (iVar7 != -1);
        }
        *(undefined4 *)(iVar4 + 0x8c) = 0;
        CUtlMemory<CDirectorItemManager::ItemRestoreInfo,int>::Purge
                  ((CUtlMemory<CDirectorItemManager::ItemRestoreInfo,int> *)(iVar4 + 0x80));
        *(undefined4 *)(iVar4 + 0x90) = *(undefined4 *)(iVar4 + 0x80);
        CUtlMemory<CDirectorItemManager::ItemRestoreInfo,int>::Purge
                  ((CUtlMemory<CDirectorItemManager::ItemRestoreInfo,int> *)(iVar4 + 0x80));
        local_28 = local_28 + -1;
        local_2c = local_2c + -0x94;
      } while (local_28 != -1);
    }
    puVar2[0x105] = 0;
    CUtlMemory<CDirectorItemManager::RevisitPopulationInfo,int>::Purge
              ((CUtlMemory<CDirectorItemManager::RevisitPopulationInfo,int> *)(puVar2 + 0x102));
    puVar2[0x106] = puVar2[0x102];
    CUtlMemory<CDirectorItemManager::RevisitPopulationInfo,int>::Purge
              ((CUtlMemory<CDirectorItemManager::RevisitPopulationInfo,int> *)(puVar2 + 0x102));
    puVar2[0xff] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xfc));
    puVar2[0x100] = puVar2[0xfc];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xfc));
    puVar2[0xfa] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xf7));
    puVar2[0xfb] = puVar2[0xf7];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xf7));
    puVar2[0xf2] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xef));
    puVar2[0xf3] = puVar2[0xef];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xef));
    puVar2[0xed] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xea));
    puVar2[0xee] = puVar2[0xea];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xea));
    puVar2[0xe5] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xe2));
    puVar2[0xe6] = puVar2[0xe2];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xe2));
    puVar2[0xe0] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xdd));
    puVar2[0xe1] = puVar2[0xdd];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xdd));
    puVar2[0xd8] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xd5));
    puVar2[0xd9] = puVar2[0xd5];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xd5));
    puVar2[0xd3] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xd0));
    puVar2[0xd4] = puVar2[0xd0];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xd0));
    puVar2[0xcb] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 200));
    puVar2[0xcc] = puVar2[200];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 200));
    puVar2[0xc6] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xc3));
    puVar2[199] = puVar2[0xc3];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xc3));
    puVar2[0xbe] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xbb));
    puVar2[0xbf] = puVar2[0xbb];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xbb));
    puVar2[0xb9] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xb6));
    puVar2[0xba] = puVar2[0xb6];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xb6));
    puVar2[0xb1] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xae));
    puVar2[0xb2] = puVar2[0xae];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xae));
    puVar2[0xac] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xa9));
    puVar2[0xad] = puVar2[0xa9];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xa9));
    puVar2[0xa4] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xa1));
    puVar2[0xa5] = puVar2[0xa1];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0xa1));
    puVar2[0x9f] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x9c));
    puVar2[0xa0] = puVar2[0x9c];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x9c));
    puVar2[0x97] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x94));
    puVar2[0x98] = puVar2[0x94];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x94));
    puVar2[0x92] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x8f));
    puVar2[0x93] = puVar2[0x8f];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x8f));
    puVar2[0x8a] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x87));
    puVar2[0x8b] = puVar2[0x87];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x87));
    puVar2[0x85] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x82));
    puVar2[0x86] = puVar2[0x82];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x82));
    puVar2[0x7d] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x7a));
    puVar2[0x7e] = puVar2[0x7a];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x7a));
    puVar2[0x78] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x75));
    puVar2[0x79] = puVar2[0x75];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x75));
    puVar2[0x70] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x6d));
    puVar2[0x71] = puVar2[0x6d];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x6d));
    puVar2[0x6b] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x68));
    puVar2[0x6c] = puVar2[0x68];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x68));
    puVar2[99] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x60));
    puVar2[100] = puVar2[0x60];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x60));
    puVar2[0x5e] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x5b));
    puVar2[0x5f] = puVar2[0x5b];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x5b));
    puVar2[0x56] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x53));
    puVar2[0x57] = puVar2[0x53];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x53));
    puVar2[0x51] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x4e));
    puVar2[0x52] = puVar2[0x4e];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x4e));
    puVar2[0x49] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x46));
    puVar2[0x4a] = puVar2[0x46];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x46));
    puVar2[0x44] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x41));
    puVar2[0x45] = puVar2[0x41];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x41));
    puVar2[0x3c] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x39));
    puVar2[0x3d] = puVar2[0x39];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x39));
    puVar2[0x37] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x34));
    puVar2[0x38] = puVar2[0x34];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x34));
    puVar2[0x2f] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x2c));
    puVar2[0x30] = puVar2[0x2c];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x2c));
    puVar2[0x2a] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x27));
    puVar2[0x2b] = puVar2[0x27];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x27));
    puVar2[0x22] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x1f));
    puVar2[0x23] = puVar2[0x1f];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x1f));
    puVar2[0x1d] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x1a));
    puVar2[0x1e] = puVar2[0x1a];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0x1a));
    puVar2[0x15] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x12));
    puVar2[0x16] = puVar2[0x12];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>,int> *)(puVar2 + 0x12));
    puVar2[0x10] = 0;
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xd));
    puVar2[0x11] = puVar2[0xd];
    CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int>::Purge
              ((CUtlMemory<EntityLocationInfo<CHandle<CBaseEntity>>*,int> *)(puVar2 + 0xd));
    puVar2[7] = 0;
    CUtlMemory<CDirectorItemManager::HealingItemInfo,int>::Purge
              ((CUtlMemory<CDirectorItemManager::HealingItemInfo,int> *)(puVar2 + 4));
    puVar2[8] = puVar2[4];
    CUtlMemory<CDirectorItemManager::HealingItemInfo,int>::Purge
              ((CUtlMemory<CDirectorItemManager::HealingItemInfo,int> *)(puVar2 + 4));
    free(puVar2);
  }
  puVar2 = *(undefined4 **)(this + 0x630);
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = &PTR_OnBeginTransition_00ce4620;
    puVar2[0x10] = 0;
    CUtlMemory<char*,int>::Purge((CUtlMemory<char*,int> *)(puVar2 + 0xd));
    puVar2[0x11] = puVar2[0xd];
    CUtlMemory<char*,int>::Purge((CUtlMemory<char*,int> *)(puVar2 + 0xd));
    puVar2[10] = 0;
    CUtlMemory<char*,int>::Purge((CUtlMemory<char*,int> *)(puVar2 + 7));
    puVar2[0xb] = puVar2[7];
    CUtlMemory<char*,int>::Purge((CUtlMemory<char*,int> *)(puVar2 + 7));
    puVar2[4] = 0;
    CUtlMemory<char*,int>::Purge((CUtlMemory<char*,int> *)(puVar2 + 1));
    puVar2[5] = puVar2[1];
    CUtlMemory<char*,int>::Purge((CUtlMemory<char*,int> *)(puVar2 + 1));
    free(puVar2);
  }
  puVar2 = *(undefined4 **)(this + 0x634);
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = &PTR_OnServerShutdown_00ce62c8;
    puVar2[0x11] = 0;
    CUtlMemory<DirectorNewPlayerType_t,int>::Purge
              ((CUtlMemory<DirectorNewPlayerType_t,int> *)(puVar2 + 0xe));
    puVar2[0x12] = puVar2[0xe];
    CUtlMemory<DirectorNewPlayerType_t,int>::Purge
              ((CUtlMemory<DirectorNewPlayerType_t,int> *)(puVar2 + 0xe));
    puVar2[4] = 0;
    CUtlMemory<int,int>::Purge((CUtlMemory<int,int> *)(puVar2 + 1));
    puVar2[5] = puVar2[1];
    CUtlMemory<int,int>::Purge((CUtlMemory<int,int> *)(puVar2 + 1));
    free(puVar2);
  }
  if (*(void **)(this + 0x638) != (void *)0x0) {
    free(*(void **)(this + 0x638));
  }
  if (*(void **)(this + 0x63c) != (void *)0x0) {
    free(*(void **)(this + 0x63c));
  }
  if (*(void **)(this + 0x640) != (void *)0x0) {
    free(*(void **)(this + 0x640));
  }
  __ptr = *(void **)(this + 0x644);
  if (__ptr != (void *)0x0) {
    *(undefined4 *)((int)__ptr + 0x4c) = 0;
    CUtlMemory<int,int>::Purge((CUtlMemory<int,int> *)((int)__ptr + 0x40));
    *(undefined4 *)((int)__ptr + 0x50) = *(undefined4 *)((int)__ptr + 0x40);
    CUtlMemory<int,int>::Purge((CUtlMemory<int,int> *)((int)__ptr + 0x40));
    iVar4 = *(int *)((int)__ptr + 0x38) + -1;
    if (-1 < iVar4) {
      iVar7 = iVar4 * 0x14;
      do {
        iVar4 = iVar4 + -1;
        this_00 = (CUtlMemory<CHandle<CBaseEntity>,int> *)(*(int *)((int)__ptr + 0x2c) + iVar7);
        iVar7 = iVar7 + -0x14;
        *(undefined4 *)(this_00 + 0xc) = 0;
        CUtlMemory<CHandle<CBaseEntity>,int>::Purge(this_00);
        *(undefined4 *)(this_00 + 0x10) = *(undefined4 *)this_00;
        CUtlMemory<CHandle<CBaseEntity>,int>::Purge(this_00);
      } while (iVar4 != -1);
    }
    *(undefined4 *)((int)__ptr + 0x38) = 0;
    CUtlMemory<CUtlVector<CHandle<CBaseEntity>,CUtlMemory<CHandle<CBaseEntity>,int>>,int>::Purge
              ((CUtlMemory<CUtlVector<CHandle<CBaseEntity>,CUtlMemory<CHandle<CBaseEntity>,int>>,int>
                *)((int)__ptr + 0x2c));
    *(undefined4 *)((int)__ptr + 0x3c) = *(undefined4 *)((int)__ptr + 0x2c);
    CUtlMemory<CUtlVector<CHandle<CBaseEntity>,CUtlMemory<CHandle<CBaseEntity>,int>>,int>::Purge
              ((CUtlMemory<CUtlVector<CHandle<CBaseEntity>,CUtlMemory<CHandle<CBaseEntity>,int>>,int>
                *)((int)__ptr + 0x2c));
    free(__ptr);
  }
  *(undefined4 *)(this + 0x514) = 0;
  CUtlMemory<CDirectorJournalTask,int>::Purge
            ((CUtlMemory<CDirectorJournalTask,int> *)(this + 0x508));
  *(undefined4 *)(this + 0x518) = *(undefined4 *)(this + 0x508);
  CUtlMemory<CDirectorJournalTask,int>::Purge
            ((CUtlMemory<CDirectorJournalTask,int> *)(this + 0x508));
  piVar3 = g_pScriptVM;
  if (*(int *)(this + 0x4b8) != -1) {
    if (g_pScriptVM == (int *)0x0) {
      piVar5 = *(int **)(this + 0x4c0);
    }
    else {
      piVar5 = *(int **)(this + 0x4c0);
      if (0 < *piVar5) {
        iVar4 = 0;
        do {
          (**(code **)(*piVar3 + 0x4c))(piVar3,*(undefined4 *)piVar5[iVar4 + 1]);
          iVar7 = iVar4 * 4;
          iVar4 = iVar4 + 1;
          **(undefined4 **)(*(int *)(this + 0x4c0) + 4 + iVar7) = 0xffffffff;
          piVar5 = *(int **)(this + 0x4c0);
        } while (iVar4 < *piVar5);
      }
    }
    if (piVar5 != &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::
                   StaticData()::staticData) {
      free(piVar5);
      *(undefined4 **)(this + 0x4c0) =
           &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::
            StaticData()::staticData;
    }
    if (((*(int *)(this + 0x4b8) != 0) && (piVar3 != (int *)0x0)) && (((byte)this[0x4bc] & 1) == 0))
    {
      (**(code **)(*piVar3 + 0x44))(piVar3,*(int *)(this + 0x4b8));
    }
    *(undefined4 *)(this + 0x4b8) = 0xffffffff;
  }
  *(undefined4 *)(this + 0x4bc) = 0;
  if (*(undefined4 **)(this + 0x4c0) !=
      &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::StaticData()::
       staticData) {
    free(*(undefined4 **)(this + 0x4c0));
    *(undefined4 **)(this + 0x4c0) =
         &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::
          StaticData()::staticData;
  }
  pCVar1 = this + 0x4ac;
  local_24 = this + 0x4ac;
  do {
    piVar3 = g_pScriptVM;
    if (*(int *)local_24 != -1) {
      if (g_pScriptVM == (int *)0x0) {
        piVar5 = *(int **)(this + (int)(local_24 + (0x4b4 - (int)pCVar1)));
      }
      else {
        piVar5 = *(int **)(this + (int)(local_24 + (0x4b4 - (int)pCVar1)));
        if (0 < *piVar5) {
          iVar4 = 0;
          do {
            (**(code **)(*piVar3 + 0x4c))(piVar3,*(undefined4 *)piVar5[iVar4 + 1]);
            iVar7 = iVar4 * 4;
            iVar4 = iVar4 + 1;
            **(undefined4 **)(*(int *)(this + (int)(local_24 + (0x4b4 - (int)pCVar1))) + 4 + iVar7)
                 = 0xffffffff;
            piVar5 = *(int **)(this + (int)(local_24 + (0x4b4 - (int)pCVar1)));
          } while (iVar4 < *piVar5);
        }
      }
      if (piVar5 != &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::
                     StaticData()::staticData) {
        free(piVar5);
        *(undefined4 **)(this + (int)(local_24 + (0x4b4 - (int)pCVar1))) =
             &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::
              StaticData()::staticData;
      }
      if (((*(int *)local_24 != 0) && (piVar3 != (int *)0x0)) && (((byte)local_24[4] & 1) == 0)) {
        (**(code **)(*piVar3 + 0x44))(piVar3,*(int *)local_24);
      }
      *(int *)local_24 = -1;
    }
    *(int *)(local_24 + 4) = 0;
    if (*(undefined4 **)(this + (int)(local_24 + (0x4b4 - (int)pCVar1))) !=
        &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::StaticData()
         ::staticData) {
      free(*(undefined4 **)(this + (int)(local_24 + (0x4b4 - (int)pCVar1))));
      *(undefined4 **)(this + (int)(local_24 + (0x4b4 - (int)pCVar1))) =
           &CUtlVectorUltraConservative<HSCRIPT__**,CUtlVectorUltraConservativeAllocator>::
            StaticData()::staticData;
    }
    bVar9 = this + 0x488 != local_24;
    local_24 = local_24 + -0xc;
  } while (bVar9);
  *(undefined4 *)(this + 0x480) = 0;
  CUtlMemory<CHandle<CBaseEntity>,int>::Purge
            ((CUtlMemory<CHandle<CBaseEntity>,int> *)(this + 0x474));
  *(undefined4 *)(this + 0x484) = *(undefined4 *)(this + 0x474);
  CUtlMemory<CHandle<CBaseEntity>,int>::Purge
            ((CUtlMemory<CHandle<CBaseEntity>,int> *)(this + 0x474));
  *(undefined4 *)(this + 0x460) = 0;
  CUtlMemory<CHandle<CBaseEntity>,int>::Purge
            ((CUtlMemory<CHandle<CBaseEntity>,int> *)(this + 0x454));
  *(undefined4 *)(this + 0x464) = *(undefined4 *)(this + 0x454);
  CUtlMemory<CHandle<CBaseEntity>,int>::Purge
            ((CUtlMemory<CHandle<CBaseEntity>,int> *)(this + 0x454));
  *(undefined4 *)(this + 0x40c) = 0;
  CUtlMemory<CHandle<CTerrorPlayer>,int>::Purge
            ((CUtlMemory<CHandle<CTerrorPlayer>,int> *)(this + 0x400));
  *(undefined4 *)(this + 0x410) = *(undefined4 *)(this + 0x400);
  CUtlMemory<CHandle<CTerrorPlayer>,int>::Purge
            ((CUtlMemory<CHandle<CTerrorPlayer>,int> *)(this + 0x400));
  *(undefined4 *)(this + 0x3ec) = 0;
  CUtlMemory<CHandle<CSurvivorRescue>,int>::Purge
            ((CUtlMemory<CHandle<CSurvivorRescue>,int> *)(this + 0x3e0));
  *(undefined4 *)(this + 0x3f0) = *(undefined4 *)(this + 0x3e0);
  CUtlMemory<CHandle<CSurvivorRescue>,int>::Purge
            ((CUtlMemory<CHandle<CSurvivorRescue>,int> *)(this + 0x3e0));
  *(undefined4 *)(this + 0x370) = 0;
  CUtlMemory<CountdownTimer,int>::Purge((CUtlMemory<CountdownTimer,int> *)(this + 0x33c));
  *(undefined4 *)(this + 0x374) = *(undefined4 *)(this + 0x33c);
  CUtlMemory<CountdownTimer,int>::Purge((CUtlMemory<CountdownTimer,int> *)(this + 0x33c));
  *(undefined4 *)(this + 0x1b4) = 0;
  CUtlMemory<TerrorNavArea*,int>::Purge((CUtlMemory<TerrorNavArea*,int> *)(this + 0x1a8));
  *(undefined4 *)(this + 0x1b8) = *(undefined4 *)(this + 0x1a8);
  CUtlMemory<TerrorNavArea*,int>::Purge((CUtlMemory<TerrorNavArea*,int> *)(this + 0x1a8));
  *(undefined4 *)(this + 0x158) = 0;
  CUtlMemory<CDirector::FadeOutInfo_t,int>::Purge
            ((CUtlMemory<CDirector::FadeOutInfo_t,int> *)(this + 0x14c));
  *(undefined4 *)(this + 0x15c) = *(undefined4 *)(this + 0x14c);
  CUtlMemory<CDirector::FadeOutInfo_t,int>::Purge
            ((CUtlMemory<CDirector::FadeOutInfo_t,int> *)(this + 0x14c));
  *(undefined4 *)(this + 0x144) = 0;
  CUtlMemory<CHandle<CBaseEntity>,int>::Purge
            ((CUtlMemory<CHandle<CBaseEntity>,int> *)(this + 0x138));
  *(undefined4 *)(this + 0x148) = *(undefined4 *)(this + 0x138);
  CUtlMemory<CHandle<CBaseEntity>,int>::Purge
            ((CUtlMemory<CHandle<CBaseEntity>,int> *)(this + 0x138));
  CUtlRBTree<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short,CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
  ::RemoveAll((CUtlRBTree<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short,CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
               *)(this + 0x11c));
  *(undefined2 *)(this + 0x130) = 0xffff;
  CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
  ::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
           *)(this + 0x120));
  *(undefined2 *)(this + 0x132) = 0xffff;
  CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
  ::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<unsigned_long_long,KeyValues*,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
           *)(this + 0x120));
  *(undefined ***)this = &PTR__CGameEventListener_00bfb6e8;
  *(undefined4 *)(this + 4) = 0xd;
  if (this[8] != (CDirector)0x0) {
    if (gameeventmanager != (int *)0x0) {
      (**(code **)(*gameeventmanager + 0x18))(gameeventmanager,this);
    }
    this[8] = (CDirector)0x0;
  }
  *(undefined ***)this = &PTR__IGameEventListener2_00bfb610;
  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)