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