L L4D2node

CParticleCollection::RecomputeBounds

0x00bccf00 · 2588 bytes · __thiscall

_ZN19CParticleCollection15RecomputeBoundsEv

Decompiled

undefined (1 param)

/* CParticleCollection::RecomputeBounds() */

void __thiscall CParticleCollection::RecomputeBounds(CParticleCollection *this)

{
  undefined1 (*pauVar1) [16];
  undefined1 (*pauVar2) [16];
  float *pfVar3;
  float fVar4;
  uint uVar5;
  float *pfVar6;
  float *pfVar7;
  float *pfVar8;
  undefined1 (*pauVar9) [16];
  undefined1 (*pauVar10) [16];
  undefined1 (*pauVar11) [16];
  undefined1 (*pauVar12) [16];
  undefined1 (*pauVar13) [16];
  undefined1 (*pauVar14) [16];
  int iVar15;
  undefined1 (*pauVar16) [16];
  uint uVar17;
  int iVar18;
  float *pfVar19;
  uint uVar20;
  float *pfVar21;
  longdouble lVar22;
  float fVar23;
  undefined1 auVar24 [16];
  float fVar25;
  float fVar26;
  float fVar31;
  undefined1 auVar27 [16];
  undefined1 auVar28 [16];
  undefined1 auVar29 [16];
  undefined1 auVar30 [16];
  float fVar32;
  float fVar35;
  undefined1 auVar33 [16];
  float fVar36;
  undefined1 auVar34 [16];
  float fVar37;
  float fVar39;
  float fVar40;
  undefined1 auVar38 [16];
  float fVar41;
  float fVar42;
  float fVar45;
  float fVar46;
  undefined1 auVar43 [16];
  float fVar47;
  undefined1 auVar44 [16];
  float fVar48;
  float fVar51;
  float fVar52;
  undefined1 auVar49 [16];
  float fVar53;
  undefined1 auVar50 [16];
  float fVar54;
  undefined1 auVar55 [16];
  undefined1 auVar56 [16];
  float *local_f0;
  int local_ec;
  undefined1 (*local_e8) [16];
  float *local_e0;
  float local_a8;
  undefined1 local_9c [16];
  undefined1 local_8c [16];
  undefined1 local_7c [8];
  float fStack_74;
  float fStack_70;
  undefined1 local_6c [8];
  float fStack_64;
  float fStack_60;
  float local_5c;
  float fStack_58;
  float fStack_54;
  float fStack_50;
  float local_4c;
  float fStack_48;
  float fStack_44;
  float fStack_40;
  float local_3c;
  float fStack_38;
  float fStack_34;
  float fStack_30;
  float local_28;
  float local_24;
  float local_20;
  
  uVar17 = *(uint *)(this + 0x30);
  if (uVar17 == 0) {
    this[0x94] = (CParticleCollection)0x0;
    *(undefined4 *)(this + 0x98) = 0x7f7fffff;
    *(undefined4 *)(this + 0x9c) = 0x7f7fffff;
    *(undefined4 *)(this + 0xa0) = 0x7f7fffff;
    *(undefined4 *)(this + 0xa4) = 0xff7fffff;
    *(undefined4 *)(this + 0xa8) = 0xff7fffff;
    *(undefined4 *)(this + 0xac) = 0xff7fffff;
    *(undefined4 *)(this + 0x334) = 0;
    *(undefined4 *)(this + 0x338) = 0;
    *(undefined4 *)(this + 0x33c) = 0;
    return;
  }
  local_ec = *(int *)(this + 0x48);
  local_8c._8_4_ = 0x65a96816;
  local_8c._0_8_ = 0x65a9681665a96816;
  local_8c._12_4_ = 0x65a96816;
  local_9c._8_4_ = 0xe5a96816;
  local_9c._0_8_ = 0xe5a96816e5a96816;
  local_9c._12_4_ = 0xe5a96816;
  local_5c = (float)0;
  fStack_58 = (float)0;
  fStack_54 = (float)0;
  fStack_50 = (float)0;
  fVar4 = *(float *)(local_ec + 0x1ec);
  if (*(float *)(this + 0x34) == 0.0) {
    local_a8 = 1.0;
  }
  else {
    local_a8 = 1.0 / *(float *)(this + 0x34);
  }
  local_e0 = *(float **)(this + 0xfc);
  local_e8 = *(undefined1 (**) [16])(this + 0xd4);
  uVar5 = *(uint *)(this + 0x134) >> 2;
  uVar20 = uVar17 + 3;
  if (-1 < (int)uVar17) {
    uVar20 = uVar17;
  }
  local_f0 = *(float **)(this + 0xdc);
  iVar15 = (int)uVar20 >> 2;
  if (0.0 < fVar4) {
    iVar18 = iVar15 + -1;
    if (iVar15 != 0) {
      local_3c = (float)0;
      fStack_38 = (float)0;
      fStack_34 = (float)0;
      fStack_30 = (float)0;
      local_4c = (float)0;
      fStack_48 = (float)0;
      fStack_44 = (float)0;
      fStack_40 = (float)0;
      auVar24._8_4_ = 0x65a96816;
      auVar24._0_8_ = 0x65a9681665a96816;
      auVar24._12_4_ = 0x65a96816;
      pauVar16 = local_e8;
      pfVar19 = local_f0;
      pfVar21 = local_e0;
      auVar55 = local_8c;
      _local_7c = local_9c;
      _local_6c = local_9c;
      do {
        iVar18 = iVar18 + -1;
        pauVar1 = pauVar16 + 1;
        pauVar9 = pauVar16 + 1;
        pauVar10 = pauVar16 + 1;
        pauVar11 = pauVar16 + 1;
        auVar49 = maxps(local_9c,pauVar16[2]);
        auVar43 = minps(local_8c,pauVar16[2]);
        auVar38 = maxps(_local_6c,*pauVar16);
        fVar48 = *pfVar19 - *(float *)*pauVar16;
        fVar51 = pfVar19[1] - *(float *)(*pauVar16 + 4);
        fVar52 = pfVar19[2] - *(float *)(*pauVar16 + 8);
        fVar53 = pfVar19[3] - *(float *)(*pauVar16 + 0xc);
        pauVar2 = pauVar16 + 2;
        pauVar12 = pauVar16 + 2;
        pauVar13 = pauVar16 + 2;
        pauVar14 = pauVar16 + 2;
        fVar42 = pfVar19[4] - *(float *)pauVar16[1];
        fVar45 = pfVar19[5] - *(float *)(pauVar16[1] + 4);
        fVar46 = pfVar19[6] - *(float *)(pauVar16[1] + 8);
        fVar47 = pfVar19[7] - *(float *)(pauVar16[1] + 0xc);
        pfVar3 = pfVar19 + 8;
        pfVar6 = pfVar19 + 9;
        pfVar7 = pfVar19 + 10;
        pfVar8 = pfVar19 + 0xb;
        pfVar19 = pfVar19 + (*(uint *)(this + 0x13c) >> 2) * 4;
        auVar56 = maxps(_local_7c,pauVar16[1]);
        fVar37 = *pfVar3 - *(float *)pauVar16[2];
        fVar39 = *pfVar6 - *(float *)(pauVar16[2] + 4);
        fVar40 = *pfVar7 - *(float *)(pauVar16[2] + 8);
        fVar41 = *pfVar8 - *(float *)(pauVar16[2] + 0xc);
        auVar24 = minps(auVar24,*pauVar16);
        auVar55 = minps(auVar55,pauVar16[1]);
        auVar33._0_4_ = fVar42 * fVar42 + fVar48 * fVar48;
        auVar33._4_4_ = fVar45 * fVar45 + fVar51 * fVar51;
        auVar33._8_4_ = fVar46 * fVar46 + fVar52 * fVar52;
        auVar33._12_4_ = fVar47 * fVar47 + fVar53 * fVar53;
        auVar27._0_4_ = fVar37 * fVar37 + auVar33._0_4_;
        auVar27._4_4_ = fVar39 * fVar39 + auVar33._4_4_;
        auVar27._8_4_ = fVar40 * fVar40 + auVar33._8_4_;
        auVar27._12_4_ = fVar41 * fVar41 + auVar33._12_4_;
        auVar28 = sqrtps(auVar27,auVar27);
        auVar29._8_4_ = 0x3a83126f;
        auVar29._0_8_ = 0x3a83126f3a83126f;
        auVar29._12_4_ = 0x3a83126f;
        auVar29 = maxps(auVar28,auVar29);
        auVar28 = rcpps(auVar33,auVar29);
        fVar23 = auVar28._0_4_;
        fVar31 = auVar28._4_4_;
        fVar54 = auVar28._8_4_;
        fVar36 = auVar28._12_4_;
        fVar25 = *pfVar21;
        pfVar3 = pfVar21 + 1;
        pfVar6 = pfVar21 + 2;
        pfVar7 = pfVar21 + 3;
        pfVar21 = pfVar21 + (*(uint *)(this + 0x15c) >> 2) * 4;
        fVar26 = (fVar23 + fVar23) - fVar23 * fVar23 * auVar29._0_4_;
        fVar32 = (fVar31 + fVar31) - fVar31 * fVar31 * auVar29._4_4_;
        fVar35 = (fVar54 + fVar54) - fVar54 * fVar54 * auVar29._8_4_;
        fVar36 = (fVar36 + fVar36) - fVar36 * fVar36 * auVar29._12_4_;
        auVar30._0_4_ = auVar29._0_4_ * fVar25 * local_a8;
        auVar30._4_4_ = auVar29._4_4_ * *pfVar3 * local_a8;
        auVar30._8_4_ = auVar29._8_4_ * *pfVar6 * local_a8;
        auVar30._12_4_ = auVar29._12_4_ * *pfVar7 * local_a8;
        auVar28._4_4_ = fVar4;
        auVar28._0_4_ = fVar4;
        auVar28._8_4_ = fVar4;
        auVar28._12_4_ = fVar4;
        auVar29 = minps(auVar30,auVar28);
        fVar25 = auVar29._0_4_;
        fVar23 = auVar29._4_4_;
        fVar31 = auVar29._8_4_;
        fVar54 = auVar29._12_4_;
        auVar50._0_4_ = fVar48 * fVar26 * fVar25 + *(float *)*pauVar16;
        auVar50._4_4_ = fVar51 * fVar32 * fVar23 + *(float *)(*pauVar16 + 4);
        auVar50._8_4_ = fVar52 * fVar35 * fVar31 + *(float *)(*pauVar16 + 8);
        auVar50._12_4_ = fVar53 * fVar36 * fVar54 + *(float *)(*pauVar16 + 0xc);
        auVar44._0_4_ = fVar42 * fVar26 * fVar25 + *(float *)pauVar16[1];
        auVar44._4_4_ = fVar45 * fVar32 * fVar23 + *(float *)(pauVar16[1] + 4);
        auVar44._8_4_ = fVar46 * fVar35 * fVar31 + *(float *)(pauVar16[1] + 8);
        auVar44._12_4_ = fVar47 * fVar36 * fVar54 + *(float *)(pauVar16[1] + 0xc);
        auVar34._0_4_ = fVar26 * fVar37 * fVar25 + *(float *)pauVar16[2];
        auVar34._4_4_ = fVar32 * fVar39 * fVar23 + *(float *)(pauVar16[2] + 4);
        auVar34._8_4_ = fVar35 * fVar40 * fVar31 + *(float *)(pauVar16[2] + 8);
        auVar34._12_4_ = fVar36 * fVar41 * fVar54 + *(float *)(pauVar16[2] + 0xc);
        _local_6c = maxps(auVar38,auVar50);
        auVar24 = minps(auVar24,auVar50);
        auVar55 = minps(auVar55,auVar44);
        local_3c = local_3c + *(float *)*pauVar16 + auVar50._0_4_;
        fStack_38 = fStack_38 + *(float *)(*pauVar16 + 4) + auVar50._4_4_;
        fStack_34 = fStack_34 + *(float *)(*pauVar16 + 8) + auVar50._8_4_;
        fStack_30 = fStack_30 + *(float *)(*pauVar16 + 0xc) + auVar50._12_4_;
        _local_7c = maxps(auVar56,auVar44);
        pauVar16 = pauVar16 + uVar5;
        local_9c = maxps(auVar49,auVar34);
        local_4c = local_4c + *(float *)*pauVar1 + auVar44._0_4_;
        fStack_48 = fStack_48 + *(float *)(*pauVar9 + 4) + auVar44._4_4_;
        fStack_44 = fStack_44 + *(float *)(*pauVar10 + 8) + auVar44._8_4_;
        fStack_40 = fStack_40 + *(float *)(*pauVar11 + 0xc) + auVar44._12_4_;
        local_8c = minps(auVar43,auVar34);
        local_5c = local_5c + *(float *)*pauVar2 + auVar34._0_4_;
        fStack_58 = fStack_58 + *(float *)(*pauVar12 + 4) + auVar34._4_4_;
        fStack_54 = fStack_54 + *(float *)(*pauVar13 + 8) + auVar34._8_4_;
        fStack_50 = fStack_50 + *(float *)(*pauVar14 + 0xc) + auVar34._12_4_;
      } while (iVar18 != -1);
      local_f0 = (float *)((int)local_f0 + (*(uint *)(this + 0x13c) >> 2) * 0x10 * iVar15);
      local_e8 = (undefined1 (*) [16])(*local_e8 + uVar5 * 0x10 * iVar15);
      local_e0 = (float *)((int)local_e0 + (*(uint *)(this + 0x15c) >> 2) * 0x10 * iVar15);
      goto LAB_00bcd09b;
    }
  }
  else {
    iVar18 = iVar15 + -1;
    if (iVar15 != 0) {
      auVar24._8_4_ = 0x65a96816;
      auVar24._0_8_ = 0x65a9681665a96816;
      auVar24._12_4_ = 0x65a96816;
      auVar55._8_4_ = 0x65a96816;
      auVar55._0_8_ = 0x65a9681665a96816;
      auVar55._12_4_ = 0x65a96816;
      fStack_64 = -1e+23;
      local_6c = 0xe5a96816e5a96816;
      fStack_60 = -1e+23;
      fStack_74 = -1e+23;
      local_7c = 0xe5a96816e5a96816;
      fStack_70 = -1e+23;
      local_5c = (float)0;
      fStack_58 = (float)0;
      fStack_54 = (float)0;
      fStack_50 = (float)0;
      local_3c = (float)0;
      fStack_38 = (float)0;
      fStack_34 = (float)0;
      fStack_30 = (float)0;
      local_4c = (float)0;
      fStack_48 = (float)0;
      fStack_44 = (float)0;
      fStack_40 = (float)0;
      pauVar16 = local_e8;
      do {
        auVar29 = *pauVar16;
        iVar18 = iVar18 + -1;
        auVar24 = minps(auVar24,auVar29);
        _local_6c = maxps(_local_6c,auVar29);
        local_3c = auVar29._0_4_ + local_3c;
        fStack_38 = auVar29._4_4_ + fStack_38;
        fStack_34 = auVar29._8_4_ + fStack_34;
        fStack_30 = auVar29._12_4_ + fStack_30;
        auVar29 = pauVar16[1];
        auVar55 = minps(auVar55,auVar29);
        _local_7c = maxps(_local_7c,auVar29);
        local_4c = auVar29._0_4_ + local_4c;
        fStack_48 = auVar29._4_4_ + fStack_48;
        fStack_44 = auVar29._8_4_ + fStack_44;
        fStack_40 = auVar29._12_4_ + fStack_40;
        auVar29 = pauVar16[2];
        pauVar16 = pauVar16 + uVar5;
        local_8c = minps(local_8c,auVar29);
        local_9c = maxps(local_9c,auVar29);
        local_5c = local_5c + auVar29._0_4_;
        fStack_58 = fStack_58 + auVar29._4_4_;
        fStack_54 = fStack_54 + auVar29._8_4_;
        fStack_50 = fStack_50 + auVar29._12_4_;
      } while (iVar18 != -1);
      local_e8 = (undefined1 (*) [16])(*local_e8 + uVar5 * 0x10 * iVar15);
      goto LAB_00bcd09b;
    }
  }
  auVar24._8_4_ = 0x65a96816;
  auVar24._0_8_ = 0x65a9681665a96816;
  auVar24._12_4_ = 0x65a96816;
  local_4c = (float)0;
  fStack_48 = (float)0;
  fStack_44 = (float)0;
  fStack_40 = (float)0;
  local_3c = (float)0;
  fStack_38 = (float)0;
  fStack_34 = (float)0;
  fStack_30 = (float)0;
  auVar55._8_4_ = 0x65a96816;
  auVar55._0_8_ = 0x65a9681665a96816;
  auVar55._12_4_ = 0x65a96816;
  _local_7c = local_9c;
  _local_6c = local_9c;
LAB_00bcd09b:
  fVar23 = auVar24._8_4_;
  fVar25 = auVar24._12_4_;
  this[0x94] = (CParticleCollection)0x1;
  if (auVar24._4_4_ <= auVar24._0_4_) {
    auVar24._0_4_ = auVar24._4_4_;
  }
  fVar54 = auVar55._8_4_;
  fVar31 = auVar55._12_4_;
  if (auVar24._0_4_ <= fVar23) {
    fVar23 = auVar24._0_4_;
  }
  if (fVar23 <= fVar25) {
    fVar25 = fVar23;
  }
  *(float *)(this + 0x98) = fVar25;
  if (auVar55._4_4_ <= auVar55._0_4_) {
    auVar55._0_4_ = auVar55._4_4_;
  }
  if (auVar55._0_4_ <= fVar54) {
    fVar54 = auVar55._0_4_;
  }
  fVar23 = local_8c._4_4_;
  if (local_8c._0_4_ <= local_8c._4_4_) {
    fVar23 = local_8c._0_4_;
  }
  if (fVar54 <= fVar31) {
    fVar31 = fVar54;
  }
  if (local_8c._8_4_ <= fVar23) {
    fVar23 = local_8c._8_4_;
  }
  *(float *)(this + 0x9c) = fVar31;
  if (local_8c._12_4_ <= fVar23) {
    fVar23 = local_8c._12_4_;
  }
  if ((float)local_6c._4_4_ <= (float)local_6c._0_4_) {
    local_6c._4_4_ = local_6c._0_4_;
  }
  *(float *)(this + 0xa0) = fVar23;
  if ((float)local_6c._4_4_ <= fStack_64) {
    local_6c._4_4_ = fStack_64;
  }
  if ((float)local_6c._4_4_ <= fStack_60) {
    local_6c._4_4_ = fStack_60;
  }
  if ((float)local_7c._4_4_ <= (float)local_7c._0_4_) {
    local_7c._4_4_ = local_7c._0_4_;
  }
  *(undefined4 *)(this + 0xa4) = local_6c._4_4_;
  if ((float)local_7c._4_4_ <= fStack_74) {
    local_7c._4_4_ = fStack_74;
  }
  if ((float)local_7c._4_4_ <= fStack_70) {
    local_7c._4_4_ = fStack_70;
  }
  local_7c._0_4_ = local_9c._4_4_;
  if (local_9c._4_4_ <= local_9c._0_4_) {
    local_7c._0_4_ = local_9c._0_4_;
  }
  *(undefined4 *)(this + 0xa8) = local_7c._4_4_;
  if ((float)local_7c._0_4_ <= local_9c._8_4_) {
    local_7c._0_4_ = local_9c._8_4_;
  }
  if ((float)local_7c._0_4_ <= local_9c._12_4_) {
    local_7c._0_4_ = local_9c._12_4_;
  }
  *(undefined4 *)(this + 0xac) = local_7c._0_4_;
  fStack_30 = fStack_38 + local_3c + fStack_34 + fStack_30;
  local_4c = fStack_48 + local_4c + fStack_44 + fStack_40;
  local_3c = fStack_58 + local_5c + fStack_54 + fStack_50;
  if ((uVar17 & 3) != 0) {
    iVar15 = 0;
    local_e8 = local_e8 + 2;
    local_f0 = local_f0 + 8;
    local_5c = fStack_30;
    local_6c._0_4_ = fVar23;
    do {
      fVar54 = *(float *)local_e8[-2];
      fVar26 = *(float *)*local_e8;
      if ((float)local_6c._4_4_ <= fVar54) {
        local_6c._4_4_ = fVar54;
      }
      fVar32 = *(float *)local_e8[-1];
      if (fVar54 <= fVar25) {
        fVar25 = fVar54;
      }
      if (fVar32 <= fVar31) {
        fVar31 = fVar32;
      }
      if ((float)local_7c._4_4_ <= fVar32) {
        local_7c._4_4_ = fVar32;
      }
      *(undefined4 *)(this + 0xa4) = local_6c._4_4_;
      fVar23 = (float)local_6c._0_4_;
      if (fVar26 <= (float)local_6c._0_4_) {
        fVar23 = fVar26;
      }
      *(float *)(this + 0x9c) = fVar31;
      local_5c = local_5c + fVar54;
      *(undefined4 *)(this + 0xa8) = local_7c._4_4_;
      *(float *)(this + 0xa0) = fVar23;
      *(float *)(this + 0x98) = fVar25;
      local_4c = local_4c + fVar32;
      if ((float)local_7c._0_4_ <= fVar26) {
        local_7c._0_4_ = fVar26;
      }
      *(undefined4 *)(this + 0xac) = local_7c._0_4_;
      local_3c = local_3c + fVar26;
      if (0.0 < fVar4) {
        local_20 = *local_f0 - fVar26;
        local_24 = local_f0[-4] - fVar32;
        local_28 = local_f0[-8] - fVar54;
        lVar22 = (longdouble)VectorNormalize((Vector *)&local_28);
        fVar23 = (float)lVar22;
        if (fVar23 <= 0.001) {
          fVar23 = 0.001;
        }
        fVar23 = local_a8 * local_e0[iVar15] * fVar23;
        uVar17 = *(uint *)(this + 0x30);
        if (fVar4 <= fVar23) {
          fVar23 = fVar4;
        }
        fVar54 = local_28 * fVar23 + fVar54;
        fVar25 = *(float *)(this + 0x98);
        if (fVar54 <= *(float *)(this + 0x98)) {
          fVar25 = fVar54;
        }
        fVar32 = local_24 * fVar23 + fVar32;
        *(float *)(this + 0x98) = fVar25;
        fVar31 = *(float *)(this + 0x9c);
        if (fVar32 <= *(float *)(this + 0x9c)) {
          fVar31 = fVar32;
        }
        fVar26 = local_20 * fVar23 + fVar26;
        *(float *)(this + 0x9c) = fVar31;
        local_6c._4_4_ = *(float *)(this + 0xa4);
        if (*(float *)(this + 0xa4) <= fVar54) {
          local_6c._4_4_ = fVar54;
        }
        local_5c = fVar54 + local_5c;
        *(undefined4 *)(this + 0xa4) = local_6c._4_4_;
        local_7c._0_4_ = *(float *)(this + 0xac);
        if (*(float *)(this + 0xac) <= fVar26) {
          local_7c._0_4_ = fVar26;
        }
        local_7c._4_4_ = *(float *)(this + 0xa8);
        if (*(float *)(this + 0xa8) <= fVar32) {
          local_7c._4_4_ = fVar32;
        }
        local_4c = fVar32 + local_4c;
        *(undefined4 *)(this + 0xac) = local_7c._0_4_;
        *(undefined4 *)(this + 0xa8) = local_7c._4_4_;
        fVar23 = *(float *)(this + 0xa0);
        if (fVar26 <= *(float *)(this + 0xa0)) {
          fVar23 = fVar26;
        }
        local_3c = fVar26 + local_3c;
        *(float *)(this + 0xa0) = fVar23;
      }
      iVar15 = iVar15 + 1;
      local_e8 = (undefined1 (*) [16])(*local_e8 + 4);
      local_f0 = local_f0 + 1;
      local_6c._0_4_ = fVar23;
    } while (iVar15 < (int)(uVar17 & 3));
    local_ec = *(int *)(this + 0x48);
    fStack_30 = local_5c;
  }
  *(float *)(this + 0x98) = fVar25 + *(float *)(local_ec + 0x28);
  *(float *)(this + 0x9c) = fVar31 + *(float *)(local_ec + 0x2c);
  *(float *)(this + 0xa0) = fVar23 + *(float *)(local_ec + 0x30);
  *(float *)(this + 0xa4) = *(float *)(local_ec + 0x34) + (float)local_6c._4_4_;
  *(float *)(this + 0xa8) = *(float *)(local_ec + 0x38) + (float)local_7c._4_4_;
  *(float *)(this + 0xac) = (float)local_7c._0_4_ + *(float *)(local_ec + 0x3c);
  if (0.0 < fVar4) {
    uVar17 = uVar17 * 2;
  }
  fVar4 = 1.0 / (float)(int)uVar17;
  *(float *)(this + 0x334) = fStack_30 * fVar4;
  *(float *)(this + 0x338) = local_4c * fVar4;
  *(float *)(this + 0x33c) = local_3c * fVar4;
  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)