L L4D2node

CTerrorGameRules::Think

0x0050cad0 · 3632 bytes · __thiscall

_ZN16CTerrorGameRules5ThinkEv

Decompiled

undefined (1 param)

/* CTerrorGameRules::Think() */

void __thiscall CTerrorGameRules::Think(CTerrorGameRules *this)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  CTerrorGameRules CVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  undefined *puVar8;
  uint uVar9;
  undefined4 uVar10;
  int *piVar11;
  int iVar12;
  uint uVar13;
  int iVar14;
  int *piVar15;
  int *piVar16;
  int iVar17;
  bool bVar18;
  longdouble lVar19;
  longdouble lVar20;
  float fVar21;
  float fVar22;
  int aiStackY_148 [3];
  int local_110;
  float local_10c;
  float local_104;
  float local_100;
  float local_fc;
  int local_f0;
  PhysicsDamage local_e5;
  int *local_e4;
  int local_e0;
  int *local_dc;
  float local_d8;
  float local_d4;
  float local_d0;
  float local_cc;
  float local_c8;
  float local_c4;
  float local_c0;
  float local_bc;
  float local_b8;
  float local_b4;
  float local_b0;
  float local_ac;
  float local_a8;
  float local_a4;
  float local_a0;
  float local_9c;
  float local_98;
  float local_94;
  int *local_90;
  undefined4 local_8c;
  undefined4 local_88;
  int local_84;
  int *local_80;
  float local_7c;
  float local_78;
  float local_74;
  int local_70;
  float local_6c;
  
  piVar11 = (int *)&stack0xfffffec4;
  iVar14 = *(int *)(this + 900) + -1;
  iVar17 = *(int *)(this + 900) * 8;
  if (-1 < iVar14) {
    do {
      while( true ) {
        iVar1 = iVar17 + -8;
        uVar13 = *(uint *)(*(int *)(this + 0x378) + iVar1);
        fVar22 = (float)((uint *)(*(int *)(this + 0x378) + iVar1))[1];
        fVar21 = *(float *)(gpGlobals + 0xc);
        if ((((uVar13 != 0xffffffff) &&
             (puVar8 = g_pEntityList + (uVar13 & 0xfff) * 0x10, puVar8 != (undefined *)0xfffffffc))
            && (*(uint *)(puVar8 + 8) == uVar13 >> 0xc)) &&
           ((*(CBaseEntity **)(puVar8 + 4) != (CBaseEntity *)0x0 &&
            (CBaseEntity::AddEffects(*(CBaseEntity **)(puVar8 + 4),8), fVar21 <= fVar22 + 0.25))))
        break;
        iVar5 = *(int *)(this + 900);
        iVar12 = (iVar5 - iVar14) + -1;
        if (0 < iVar12) {
          _V_memmove((void *)(*(int *)(this + 0x378) + iVar1),
                     (void *)(iVar17 + *(int *)(this + 0x378)),iVar12 * 8);
          iVar5 = *(int *)(this + 900);
        }
        iVar14 = iVar14 + -1;
        *(int *)(this + 900) = iVar5 + -1;
        iVar17 = iVar1;
        if (iVar14 == -1) goto LAB_0050cbfe;
      }
      iVar14 = iVar14 + -1;
      iVar17 = iVar1;
    } while (iVar14 != -1);
  }
LAB_0050cbfe:
  CCSGameRules::Think((CCSGameRules *)this);
  ForEachTerrorPlayer<PhysicsDamage>(&local_e5);
  local_90 = (int *)0x0;
  local_8c = 0;
  local_88 = 0;
  local_84 = 0;
  local_80 = (int *)0x0;
                    /* try { // try from 0050cc56 to 0050cf4d has its CatchHandler @ 0050d991 */
  piVar6 = (int *)GetGlobalTeam(2);
  iVar17 = 1;
  do {
    iVar14 = *piVar6;
    *piVar11 = (int)piVar6;
    pcVar2 = *(code **)(iVar14 + 0x354);
    piVar11[-1] = 0x50cc81;
    iVar14 = (*pcVar2)();
    if (iVar14 <= iVar17 + -1) {
      *piVar11 = TheDirector;
                    /* try { // try from 0050d2a8 to 0050d447 has its CatchHandler @ 0050d991 */
      piVar11[-1] = 0x50d2ad;
      CVar4 = (CTerrorGameRules)CDirector::AreTeamsFlipped((CDirector *)*piVar11);
      if (CVar4 != this[0x490]) {
        piVar11[-1] = 0x50d2bf;
        CGameRulesProxy::NotifyNetworkStateChanged();
        this[0x490] = CVar4;
      }
      CVar4 = *(CTerrorGameRules *)(TheDirector + 0x4e5);
      if (CVar4 != this[0x491]) {
        piVar11[-1] = 0x50d2e4;
        CGameRulesProxy::NotifyNetworkStateChanged();
        this[0x491] = CVar4;
      }
      *piVar11 = TheDirector;
      piVar11[-1] = 0x50d2fa;
      CVar4 = (CTerrorGameRules)CDirector::IsTransitioningToNextMap();
      if (CVar4 != this[0x492]) {
        piVar11[-1] = 0x50d30c;
        CGameRulesProxy::NotifyNetworkStateChanged();
        this[0x492] = CVar4;
      }
      CVar4 = *(CTerrorGameRules *)(*(int *)(TheDirector + 0x63c) + 0x18);
      if (CVar4 != this[0x493]) {
        piVar11[-1] = 0x50d334;
        CGameRulesProxy::NotifyNetworkStateChanged();
        this[0x493] = CVar4;
      }
      if (*(float *)(this + 0xdf4) <= *(float *)(gpGlobals + 0xc) &&
          *(float *)(gpGlobals + 0xc) != *(float *)(this + 0xdf4)) {
                    /* try { // try from 0050d6bf to 0050d786 has its CatchHandler @ 0050d991 */
        piVar11[-1] = 0x50d6c4;
        cVar3 = IsVersusMode();
        if (cVar3 != '\0') {
          if (*(float *)(TheDirector + 0x270) <= 0.0) {
            piVar11[1] = 0;
            *piVar11 = (int)this;
            piVar11[-1] = 0x50d787;
            RecomputeTeamScores((CTerrorGameRules *)*piVar11,SUB41(piVar11[1],0));
          }
          *(float *)(this + 0xdf4) = *(float *)(gpGlobals + 0xc) + 1.0;
        }
      }
      piVar11[-1] = 0x50d35c;
      cVar3 = IsSurvivalMode();
      if (cVar3 != '\0') {
        fVar22 = *(float *)(this + 0x318);
        if (0.0 < fVar22) {
          fVar21 = fVar22 - *(float *)(this + 0x31c);
          if (fVar21 <= 0.0) {
            if (*(float *)(this + 800) <= *(float *)(gpGlobals + 0xc) &&
                *(float *)(gpGlobals + 0xc) != *(float *)(this + 800)) {
              if (8.0 <= fVar22) {
                fVar22 = 8.0;
              }
              fVar22 = fVar22 - *(float *)(gpGlobals + 0x10);
              if (fVar22 <= 0.0) {
                fVar22 = 0.0;
              }
              *(float *)(this + 0x318) = fVar22;
              *(float *)(this + 0x31c) = fVar22;
            }
          }
          else {
            if (4.0 <= fVar21) {
              fVar21 = 4.0;
            }
            fVar21 = fVar21 + *(float *)(this + 0x31c);
            *(float *)(this + 0x31c) = fVar21;
            *(float *)(this + 0x318) = fVar21;
            iVar17 = gpGlobals;
            *(float *)(this + 800) = *(float *)(gpGlobals + 0xc) + 2.5;
            if (((16.0 < fVar21) && (uVar13 = *(uint *)(this + 0x314), uVar13 != 0xffffffff)) &&
               ((puVar8 = g_pEntityList + (uVar13 & 0xfff) * 0x10, puVar8 != (undefined *)0xfffffffc
                && ((*(uint *)(puVar8 + 8) == uVar13 >> 0xc &&
                    (piVar6 = *(int **)(puVar8 + 4), piVar6 != (int *)0x0)))))) {
              fVar22 = *(float *)(iVar17 + 0xc);
              if (*(float *)(this + 0x324) <= fVar22 && fVar22 != *(float *)(this + 0x324)) {
                piVar11[5] = 0;
                piVar11[4] = 0;
                piVar11[3] = 0x41200000;
                piVar11[2] = (int)piVar6;
                piVar11[1] = (int)piVar6;
                *piVar11 = (int)&local_7c;
                piVar11[-1] = 0x50d8fb;
                CTakeDamageInfo::CTakeDamageInfo
                          ((CTakeDamageInfo *)*piVar11,(CBaseEntity *)piVar11[1],
                           (CBaseEntity *)piVar11[2],(float)piVar11[3],piVar11[4],piVar11[5]);
                piVar11[1] = (int)&local_7c;
                *piVar11 = (int)piVar6;
                piVar11[-1] = 0x50d907;
                CBaseEntity::TakeDamage((CBaseEntity *)*piVar11,(CTakeDamageInfo *)piVar11[1]);
                iVar17 = gpGlobals;
                *(float *)(this + 0x324) = *(float *)(gpGlobals + 0xc) + 1.0;
                fVar22 = *(float *)(iVar17 + 0xc);
              }
              if (*(float *)(this + 0x328) <= fVar22 && fVar22 != *(float *)(this + 0x328)) {
                *(int *)(this + 0x32c) = *(int *)(this + 0x32c) + 1;
                piVar11[1] = 0x41200000;
                *piVar11 = 0xc1200000;
                    /* try { // try from 0050d7fc to 0050d906 has its CatchHandler @ 0050d991 */
                piVar11[-1] = 0x50d801;
                lVar19 = (longdouble)RandomFloat();
                piVar11[1] = 0x41200000;
                *piVar11 = 0xc1200000;
                piVar11[-1] = 0x50d821;
                lVar20 = (longdouble)RandomFloat();
                local_7c = (float)lVar20;
                local_74 = 0.0;
                local_9c = 0.0;
                local_98 = 0.0;
                local_94 = -5.0;
                local_a8 = -90.0;
                local_a4 = 0.0;
                local_a0 = 0.0;
                iVar17 = *piVar6;
                local_78 = (float)lVar19;
                *piVar11 = (int)piVar6;
                pcVar2 = *(code **)(iVar17 + 0x288);
                piVar11[-1] = 0x50d885;
                uVar10 = (*pcVar2)();
                piVar11[4] = (int)piVar6;
                piVar11[3] = (int)&local_7c;
                piVar11[2] = (int)&local_9c;
                piVar11[1] = (int)&local_a8;
                *piVar11 = uVar10;
                piVar11[-1] = 0x50d8ac;
                CSpitterProjectile::Create
                          ((Vector *)*piVar11,(QAngle *)piVar11[1],(Vector *)piVar11[2],
                           (Vector *)piVar11[3],(CBaseCombatCharacter *)piVar11[4]);
                *(float *)(this + 0x328) = *(float *)(gpGlobals + 0xc) + 7.0;
              }
            }
          }
        }
        if (Think()::sv_cheats == '\0') {
          *piVar11 = (int)&Think()::sv_cheats;
          piVar11[-1] = 0x50d49a;
          iVar17 = __cxa_guard_acquire();
          if (iVar17 != 0) {
            piVar11[1] = (int)"sv_cheats";
            *piVar11 = (int)&Think()::sv_cheats;
                    /* try { // try from 0050d4b1 to 0050d4b5 has its CatchHandler @ 0050d92e */
            piVar11[-1] = 0x50d4b6;
            ConVarRef::ConVarRef((ConVarRef *)*piVar11,(char *)piVar11[1]);
            *piVar11 = (int)&Think()::sv_cheats;
            piVar11[-1] = 0x50d4c2;
            __cxa_guard_release();
          }
        }
        *piVar11 = (int)&Think()::sv_cheats;
        piVar11[-1] = 0x50d425;
        cVar3 = ConVarRef::IsValid((ConVarRef *)*piVar11);
        if (((cVar3 != '\0') && (*(int *)(Think()::sv_cheats._4_4_ + 0x30) != 0)) ||
           (3 < *(int *)(this + 0x32c))) {
          piVar11[1] = 1;
          *piVar11 = (int)&local_7c;
          piVar11[-1] = 0x50d448;
          ForEachTerrorPlayer<MarkAsNotPresentAtSurvivalStart>
                    ((MarkAsNotPresentAtSurvivalStart *)*piVar11,SUB41(piVar11[1],0));
        }
      }
      local_84 = 0;
      *piVar11 = (int)&local_90;
      piVar11[-1] = 0x50d45d;
      CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar11);
      piVar6 = local_90;
      *piVar11 = (int)&local_90;
      local_80 = piVar6;
      piVar11[-1] = 0x50d46e;
      CUtlMemory<CBaseEntity*,int>::Purge((CUtlMemory<CBaseEntity*,int> *)*piVar11);
      return;
    }
    iVar14 = *piVar6;
    piVar11[1] = iVar17 + -1;
    *piVar11 = (int)piVar6;
    pcVar2 = *(code **)(iVar14 + 0x358);
    piVar11[-1] = 0x50cc98;
    piVar7 = (int *)(*pcVar2)();
    if (piVar7 != (int *)0x0) {
      iVar14 = *piVar7;
      *piVar11 = (int)piVar7;
      pcVar2 = *(code **)(iVar14 + 0x16c);
      piVar11[-1] = 0x50cca9;
      cVar3 = (*pcVar2)();
      if (((cVar3 != '\0') && (uVar13 = piVar7[0xceb], local_e4 = piVar7, uVar13 != 0xffffffff)) &&
         (((puVar8 = g_pEntityList + (uVar13 & 0xfff) * 0x10, puVar8 != (undefined *)0xfffffffc &&
           ((*(uint *)(puVar8 + 8) == uVar13 >> 0xc && (iVar14 = *(int *)(puVar8 + 4), iVar14 != 0))
           )) && (piVar7 = *(int **)(iVar14 + 0x238), local_e0 = iVar14, piVar7 != (int *)0x0)))) {
        iVar14 = *piVar7;
        piVar11[2] = (int)&local_cc;
        piVar11[1] = (int)&local_d8;
        *piVar11 = (int)piVar7;
        pcVar2 = *(code **)(iVar14 + 0xd4);
        piVar11[-1] = 0x50cd25;
        (*pcVar2)();
        if ((local_d4 * local_d4 + local_d8 * local_d8 + local_d0 * local_d0 <= 10000.0) &&
           (local_c8 * local_c8 + local_cc * local_cc + local_c4 * local_c4 <= 10000.0)) {
          uVar13 = local_e4[0x72c];
          if (local_84 < 1) {
LAB_0050cde0:
            piVar11[1] = local_84;
            piVar11[2] = (int)&local_e0;
            *piVar11 = (int)&local_90;
            piVar11[-1] = 0x50cdfc;
            CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>>::InsertBefore
                      ((CUtlVector<CBaseEntity*,CUtlMemory<CBaseEntity*,int>> *)*piVar11,piVar11[1],
                       (CBaseEntity **)piVar11[2]);
            piVar11[3] = 0;
            piVar11[2] = 0;
            piVar11[1] = (int)&local_b4;
            local_c0 = vec3_origin;
            local_bc = DAT_01053d4c;
            local_b8 = DAT_01053d50;
            *piVar11 = (int)local_e4;
            piVar11[-1] = 0x50ce45;
            CBasePlayer::EyeVectors
                      ((CBasePlayer *)*piVar11,(Vector *)piVar11[1],(Vector *)piVar11[2],
                       (Vector *)piVar11[3]);
            *piVar11 = (int)&local_b4;
            local_ac = 0.0;
            piVar11[-1] = 0x50ce57;
            VectorNormalize((Vector *)*piVar11);
            uVar9 = uVar13 >> 4;
            uVar13 = (uVar13 >> 3 ^ 1) & 1;
            if ((uVar13 != 0) && ((uVar9 & 1) != 0)) {
              local_b4 = -local_b4;
              local_b0 = -local_b0;
              local_ac = -local_ac;
            }
            if (((uVar9 & 1) == 0) && ((char)uVar13 != '\0')) {
              local_b4 = vec3_origin;
              local_b0 = DAT_01053d4c;
              local_ac = DAT_01053d50;
            }
            local_100 = local_b4 + vec3_origin;
            local_fc = local_b0 + DAT_01053d4c;
            local_104 = local_ac + DAT_01053d50;
            iVar14 = *local_e4;
            piVar11[1] = (int)local_e4;
            *piVar11 = (int)&local_7c;
            pcVar2 = *(code **)(iVar14 + 0x234);
            piVar11[-1] = 0x50cee4;
            (*pcVar2)();
            piVar15 = piVar11 + -1;
            local_c0 = local_c0 + local_7c;
            local_bc = local_bc + local_78;
            local_b8 = local_b8 + local_74;
            iVar14 = *local_e4;
            piVar11[-1] = (int)local_e4;
            pcVar2 = *(code **)(iVar14 + 0x288);
            piVar11[-2] = 0x50cf37;
            uVar10 = (*pcVar2)();
            *piVar11 = uVar10;
            piVar11[-1] = local_e0 + 0x194;
            piVar11[-2] = 0x50cf4e;
            lVar19 = (longdouble)
                     CCollisionProperty::CalcDistanceFromPoint
                               ((CCollisionProperty *)piVar11[-1],(Vector *)*piVar11);
            piVar11[1] = (int)&local_e4;
            *piVar11 = 0;
            piVar11[-1] = (int)&local_7c;
            local_7c = 0.0;
            local_78 = 0.0;
            local_10c = (float)(~-(uint)(64.0 < (float)lVar19) & 0x3f800000);
            local_74 = 0.0;
            local_70 = 0;
            local_6c = 0.0;
                    /* try { // try from 0050cfb4 to 0050d250 has its CatchHandler @ 0050d96a */
            piVar11[-2] = 0x50cfb9;
            CUtlVector<CTerrorPlayer*,CUtlMemory<CTerrorPlayer*,int>>::InsertBefore
                      ((CUtlVector<CTerrorPlayer*,CUtlMemory<CTerrorPlayer*,int>> *)piVar11[-1],
                       *piVar11,(CTerrorPlayer **)piVar11[1]);
            local_110 = 1;
            local_f0 = iVar17;
            while( true ) {
              iVar14 = *piVar6;
              *piVar15 = (int)piVar6;
              pcVar2 = *(code **)(iVar14 + 0x354);
              piVar15[-1] = 0x50cff4;
              iVar14 = (*pcVar2)();
              if (iVar14 <= local_f0) break;
              iVar14 = *piVar6;
              *piVar15 = (int)piVar6;
              piVar15[1] = local_f0;
              pcVar2 = *(code **)(iVar14 + 0x358);
              piVar15[-1] = 0x50d015;
              piVar11 = (int *)(*pcVar2)();
              if (piVar11 != (int *)0x0) {
                iVar14 = *piVar11;
                *piVar15 = (int)piVar11;
                pcVar2 = *(code **)(iVar14 + 0x16c);
                piVar15[-1] = 0x50d026;
                cVar3 = (*pcVar2)();
                if (cVar3 != '\0') {
                  uVar13 = piVar11[0xceb];
                  local_dc = piVar11;
                  if (((uVar13 == 0xffffffff) ||
                      (puVar8 = g_pEntityList + (uVar13 & 0xfff) * 0x10,
                      puVar8 == (undefined *)0xfffffffc)) ||
                     (*(uint *)(puVar8 + 8) != uVar13 >> 0xc)) {
                    if (local_e0 == 0) goto LAB_0050d090;
                  }
                  else if (local_e0 == *(int *)(puVar8 + 4)) {
LAB_0050d090:
                    uVar13 = piVar11[0x72c];
                    local_110 = local_110 + 1;
                    uVar9 = uVar13 >> 4;
                    piVar15[2] = (int)&local_dc;
                    piVar15[1] = local_70;
                    *piVar15 = (int)&local_7c;
                    piVar15[-1] = 0x50d0d3;
                    CUtlVector<CTerrorPlayer*,CUtlMemory<CTerrorPlayer*,int>>::InsertBefore
                              ((CUtlVector<CTerrorPlayer*,CUtlMemory<CTerrorPlayer*,int>> *)*piVar15
                               ,piVar15[1],(CTerrorPlayer **)piVar15[2]);
                    piVar15[3] = 0;
                    piVar15[2] = 0;
                    piVar15[1] = (int)&local_9c;
                    *piVar15 = (int)local_e4;
                    piVar15[-1] = 0x50d0fb;
                    CBasePlayer::EyeVectors
                              ((CBasePlayer *)*piVar15,(Vector *)piVar15[1],(Vector *)piVar15[2],
                               (Vector *)piVar15[3]);
                    *piVar15 = (int)&local_9c;
                    local_94 = 0.0;
                    piVar15[-1] = 0x50d10d;
                    VectorNormalize((Vector *)*piVar15);
                    bVar18 = (uVar13 & 8) == 0;
                    if ((bVar18) && ((uVar9 & 1) != 0)) {
                      local_9c = -local_9c;
                      local_98 = -local_98;
                      local_94 = -local_94;
                    }
                    if (((uVar9 & 1) == 0) && (bVar18)) {
                      local_9c = vec3_origin;
                      local_98 = DAT_01053d4c;
                      local_94 = DAT_01053d50;
                    }
                    local_100 = local_9c + local_100;
                    local_fc = local_98 + local_fc;
                    local_104 = local_94 + local_104;
                    iVar14 = *local_e4;
                    piVar15[1] = (int)local_e4;
                    *piVar15 = (int)&local_a8;
                    pcVar2 = *(code **)(iVar14 + 0x234);
                    piVar15[-1] = 0x50d1de;
                    (*pcVar2)();
                    piVar16 = piVar15 + -1;
                    local_c0 = local_c0 + local_a8;
                    local_bc = local_bc + local_a4;
                    local_b8 = local_b8 + local_a0;
                    iVar14 = *local_dc;
                    piVar15[-1] = (int)local_dc;
                    pcVar2 = *(code **)(iVar14 + 0x288);
                    piVar15[-2] = 0x50d23a;
                    uVar10 = (*pcVar2)();
                    *piVar15 = uVar10;
                    piVar15[-1] = local_e0 + 0x194;
                    piVar15[-2] = 0x50d251;
                    lVar19 = (longdouble)
                             CCollisionProperty::CalcDistanceFromPoint
                                       ((CCollisionProperty *)piVar15[-1],(Vector *)*piVar15);
                    piVar15 = piVar15 + -1;
                    if ((float)lVar19 < 64.0) {
                      local_10c = local_10c + 1.0;
                      piVar15 = piVar16;
                    }
                  }
                }
              }
              local_f0 = local_f0 + 1;
            }
            fVar22 = 1.0 / (float)local_110;
            local_9c = *(float *)(ZombiePushForce._28_4_ + 0x2c);
            local_94 = local_104 * local_10c * local_9c;
            local_c0 = local_c0 * fVar22;
            local_bc = local_bc * fVar22;
            local_b8 = fVar22 * local_b8;
            local_98 = local_fc * local_10c * local_9c;
            local_9c = local_100 * local_10c * local_9c;
            if ((((local_9c <= -0.01) || (0.01 <= local_9c)) || (local_98 <= -0.01)) ||
               (((0.01 <= local_98 || (local_94 <= -0.01)) || (0.01 <= local_94)))) {
              iVar14 = *piVar7;
              *piVar15 = (int)piVar7;
                    /* try { // try from 0050d66b to 0050d66d has its CatchHandler @ 0050d96a */
              pcVar2 = *(code **)(iVar14 + 0x78);
              piVar15[-1] = 0x50d66e;
              lVar19 = (longdouble)(*pcVar2)();
              if ((float)lVar19 <= (float)local_110 * *(float *)(ZombiePushMaxMass._28_4_ + 0x2c)) {
                iVar14 = *piVar7;
                piVar15[2] = (int)&local_c0;
                piVar15[1] = (int)&local_9c;
                *piVar15 = (int)piVar7;
                    /* try { // try from 0050d7ab to 0050d7b0 has its CatchHandler @ 0050d96a */
                pcVar2 = *(code **)(iVar14 + 0xf8);
                piVar15[-1] = 0x50d7b1;
                (*pcVar2)();
              }
            }
            local_70 = 0;
            *piVar15 = (int)&local_7c;
            piVar15[-1] = 0x50d6ac;
            CUtlMemory<CTerrorPlayer*,int>::Purge((CUtlMemory<CTerrorPlayer*,int> *)*piVar15);
            *piVar15 = (int)&local_7c;
            local_6c = local_7c;
            piVar15[-1] = 0x50d6ba;
            CUtlMemory<CTerrorPlayer*,int>::Purge((CUtlMemory<CTerrorPlayer*,int> *)*piVar15);
            piVar11 = piVar15;
          }
          else if (*local_90 != local_e0) {
            iVar14 = 0;
            do {
              iVar14 = iVar14 + 1;
              if (iVar14 == local_84) goto LAB_0050cde0;
            } while (local_90[iVar14] != local_e0);
            if (iVar14 < 0) goto LAB_0050cde0;
          }
        }
      }
    }
    iVar17 = iVar17 + 1;
  } while( true );
}

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)