L L4D2node

CUtlVector<CDTIProp,CUtlMemory<CDTIProp,int>>::SetCount

0x0014b2c0 · 342 bytes · __thiscall

_ZN10CUtlVectorI8CDTIProp10CUtlMemoryIS0_iEE8SetCountEi

Decompiled

undefined (2 params)

/* CUtlVector<CDTIProp, CUtlMemory<CDTIProp, int> >::SetCount(int) */

void __thiscall
CUtlVector<CDTIProp,CUtlMemory<CDTIProp,int>>::SetCount
          (CUtlVector<CDTIProp,CUtlMemory<CDTIProp,int>> *this,int param_1)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  int iVar4;
  CUtlString *this_00;
  int iVar5;
  int iVar6;
  
  RemoveAll(this);
  iVar6 = *(int *)(this + 0xc);
  if (param_1 == 0) {
    return;
  }
  iVar4 = *(int *)(this + 4);
  iVar5 = param_1 + iVar6;
  iVar3 = iVar5;
  if (iVar4 < iVar5) {
    iVar1 = *(int *)(this + 8);
    if (iVar1 < 0) goto LAB_0014b2fc;
    if (iVar1 == 0) {
      if (iVar4 == 0) {
        if (iVar5 < 2) {
          iVar4 = 1;
          goto LAB_0014b39f;
        }
        iVar4 = 1;
      }
      do {
        iVar4 = iVar4 * 2;
      } while (iVar4 < iVar5);
    }
    else {
      for (iVar4 = ((iVar5 + -1) / iVar1 + 1) * iVar1; iVar4 < iVar5; iVar4 = (iVar4 + iVar5) / 2) {
      }
    }
LAB_0014b39f:
    *(int *)(this + 4) = iVar4;
    if (*(void **)this == (void *)0x0) {
      pvVar2 = malloc(iVar4 << 5);
      *(void **)this = pvVar2;
    }
    else {
      pvVar2 = realloc(*(void **)this,iVar4 << 5);
      *(void **)this = pvVar2;
      iVar3 = param_1 + *(int *)(this + 0xc);
    }
  }
  else {
LAB_0014b2fc:
    pvVar2 = *(void **)this;
  }
  *(int *)(this + 0xc) = iVar3;
  iVar4 = (iVar3 - iVar6) - param_1;
  *(void **)(this + 0x10) = pvVar2;
  if (iVar4 < 1) {
    if (0 < param_1) {
LAB_0014b31f:
      iVar6 = iVar6 << 5;
      iVar4 = 0;
      do {
        this_00 = (CUtlString *)(iVar6 + *(int *)this);
        if (this_00 != (CUtlString *)0x0) {
          CUtlString::CUtlString(this_00);
          *(undefined4 *)(this_00 + 0x18) = 0;
          *(undefined4 *)(this_00 + 0x14) = 0;
          *(undefined4 *)(this_00 + 0x10) = 0;
        }
        iVar4 = iVar4 + 1;
        iVar6 = iVar6 + 0x20;
      } while (iVar4 < param_1);
      return;
    }
  }
  else if (0 < param_1) {
    _V_memmove((void *)((int)pvVar2 + iVar5 * 0x20),(void *)(iVar6 * 0x20 + (int)pvVar2),
               iVar4 * 0x20);
    goto LAB_0014b31f;
  }
  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)