L L4D2node

CNavAreaCriticalData::~CNavAreaCriticalData

0x00706760 · 381 bytes · __thiscall

_ZN20CNavAreaCriticalDataD1Ev

Decompiled

undefined (1 param)

/* CNavAreaCriticalData::~CNavAreaCriticalData() */

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

{
  undefined4 *puVar1;
  CNavAreaCriticalData *pCVar2;
  CNavAreaCriticalData *pCVar3;
  int iVar4;
  CNavAreaCriticalData *pCVar5;
  
  puVar1 = *(undefined4 **)(this + 0x84);
  if (CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::StaticData()::
      staticData == '\0') {
    iVar4 = __cxa_guard_acquire(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                                 ::StaticData()::staticData);
    if (iVar4 != 0) {
      __cxa_guard_release(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                           ::StaticData()::staticData);
    }
  }
  if (puVar1 != &CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::
                 StaticData()::staticData) {
    free(*(void **)(this + 0x84));
    if (CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::StaticData()::
        staticData == '\0') {
      iVar4 = __cxa_guard_acquire(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                                   ::StaticData()::staticData);
      if (iVar4 != 0) {
        __cxa_guard_release(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                             ::StaticData()::staticData);
      }
    }
    *(undefined4 **)(this + 0x84) =
         &CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::StaticData()
          ::staticData;
  }
  pCVar2 = this + 100;
  pCVar3 = this + 0x6c;
  pCVar5 = pCVar3;
  do {
    if (*(undefined4 **)(this + (int)(pCVar5 + (0x68 - (int)pCVar3))) !=
        &CUtlVectorUltraConservative<NavLadderConnect,CUtlVectorUltraConservativeAllocator>::
         StaticData()::staticData) {
      free(*(undefined4 **)(this + (int)(pCVar5 + (0x68 - (int)pCVar3))));
      *(undefined4 **)(this + (int)(pCVar5 + (0x68 - (int)pCVar3))) =
           &CUtlVectorUltraConservative<NavLadderConnect,CUtlVectorUltraConservativeAllocator>::
            StaticData()::staticData;
    }
    pCVar5 = pCVar5 + -4;
  } while (pCVar2 != pCVar5);
  pCVar5 = pCVar2;
  do {
    puVar1 = *(undefined4 **)(this + (int)(pCVar5 + (0x60 - (int)pCVar2)));
    if (CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::StaticData()::
        staticData == '\0') {
      iVar4 = __cxa_guard_acquire(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                                   ::StaticData()::staticData);
      if (iVar4 != 0) {
        __cxa_guard_release(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                             ::StaticData()::staticData);
      }
    }
    if (puVar1 != &CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::
                   StaticData()::staticData) {
      free(*(void **)(this + (int)(pCVar5 + (0x60 - (int)pCVar2))));
      if (CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::StaticData()
          ::staticData == '\0') {
        iVar4 = __cxa_guard_acquire(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                                     ::StaticData()::staticData);
        if (iVar4 != 0) {
          __cxa_guard_release(&CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>
                               ::StaticData()::staticData);
        }
      }
      *(undefined4 **)(this + (int)(pCVar5 + (0x60 - (int)pCVar2))) =
           &CUtlVectorUltraConservative<NavConnect,CUtlVectorUltraConservativeAllocator>::
            StaticData()::staticData;
    }
    pCVar5 = pCVar5 + -4;
  } while (this + 0x54 != pCVar5);
  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)