L L4D2node

CTankClaw::OnHit

0x00561860 · 3722 bytes · __thiscall

_ZN9CTankClaw5OnHitER10CGameTraceRK6Vectorb

Decompiled

undefined (4 params)

/* CTankClaw::OnHit(CGameTrace&, Vector const&, bool) */

undefined4 __thiscall
CTankClaw::OnHit(CTankClaw *this,CGameTrace *param_1,Vector *param_2,bool param_3)

{
  CBaseEntity *pCVar1;
  code *pcVar2;
  float fVar3;
  uint *puVar4;
  uint uVar5;
  CTakeDamageInfo *pCVar6;
  bool bVar7;
  char cVar8;
  byte bVar9;
  CBaseEntity *this_00;
  int iVar10;
  int *piVar11;
  undefined4 uVar12;
  CBasePropDoor *this_01;
  int iVar13;
  Vector *pVVar14;
  CBaseEntity *this_02;
  undefined4 extraout_EDX;
  undefined *puVar15;
  int *piVar16;
  float *pfVar17;
  longdouble lVar18;
  int aiStackY_120 [2];
  float fStackY_118;
  char *pcVar19;
  float local_d4;
  float local_cc;
  undefined4 *local_c4;
  Vector local_b4 [12];
  Vector local_a8 [12];
  undefined **local_9c [8];
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  int local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined2 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined1 local_24;
  undefined1 local_23;
  
  piVar16 = (int *)&stack0xfffffef4;
  piVar11 = (int *)&stack0xfffffef4;
  pfVar17 = (float *)&stack0xfffffef4;
  this_00 = (CBaseEntity *)CTerrorWeapon::GetPlayerOwner((CTerrorWeapon *)this);
  if (this_00 == (CBaseEntity *)0x0) {
    return 0;
  }
  pCVar1 = *(CBaseEntity **)(param_1 + 0x4c);
  if (pCVar1 == (CBaseEntity *)0x0) {
    return 0;
  }
  cVar8 = (**(code **)(*(int *)pCVar1 + 0x16c))();
  this_02 = (CBaseEntity *)0x0;
  if (cVar8 != '\0') {
    this_02 = pCVar1;
  }
  if (!param_3) goto LAB_005618cd;
  lVar18 = (longdouble)CDirector::GetTankDamage(TheDirector,pCVar1);
  local_cc = (float)lVar18;
  if ((((this[0x17f0] == (CTankClaw)0x0) &&
       (cVar8 = (**(code **)(*(int *)this_00 + 0x778))(), cVar8 == '\0')) &&
      (this_02 != (CBaseEntity *)0x0)) &&
     (cVar8 = (**(code **)(*(int *)this_02 + 0x7e8))(), cVar8 != '\0')) {
    if (((byte)this_02[0x14d] & 8) != 0) {
      CBaseEntity::CalcAbsolutePosition(this_02);
    }
    fVar3 = *(float *)(this_02 + 0x2e8);
    iVar10 = (**(code **)(*(int *)this_00 + 0x288))();
    local_cc = (float)((uint)local_cc & -(uint)(*(float *)(iVar10 + 8) <= fVar3));
  }
  if ((*(char **)(pCVar1 + 0x7c) == "prop_door*") ||
     (cVar8 = CBaseEntity::ClassMatchesComplex(pCVar1,"prop_door*"), cVar8 != '\0')) {
    this_01 = (CBasePropDoor *)__dynamic_cast();
    if (this_01 == (CBasePropDoor *)0x0) goto LAB_005622b0;
    cVar8 = (**(code **)(*(int *)this_01 + 0x478))();
    if (cVar8 != '\0') {
      iVar10 = (**(code **)(*(int *)this_00 + 0x52c))();
      if (((iVar10 == 0) ||
          (iVar10 = (**(code **)(*(int *)this_00 + 0x52c))(), (*(byte *)(iVar10 + 0x12d) & 8) == 0))
         && ((this_01[0x1624] != (CBasePropDoor)0x0 ||
             (cVar8 = (**(code **)(*(int *)this_01 + 0x484))(), cVar8 == '\0')))) {
        piVar11 = (int *)(**(code **)(*gameeventmanager + 0x1c))();
        if (piVar11 != (int *)0x0) {
          pcVar2 = *(code **)(*piVar11 + 0x30);
          (**(code **)(*engine + 0x40))();
          (*pcVar2)();
          (**(code **)(*gameeventmanager + 0x20))();
        }
        CBasePropDoor::OnInfectedAttack(this_01);
        return 0;
      }
      if ((this_01[0x1624] == (CBasePropDoor)0x0) && (this_01[0x105] != (CBasePropDoor)0x2)) {
        if (*(int *)(this_01 + 0x15f4) == 0) {
          local_7c = 0;
          local_70 = 0xffffffff;
          local_6c = 0;
          (**(code **)(*(int *)this_01 + 0xb4))();
          return 0;
        }
        local_7c = 0;
        local_70 = 0xffffffff;
        local_6c = 0;
        (**(code **)(*(int *)this_01 + 0xb4))();
        return 0;
      }
    }
    CBasePropDoor::OnInfectedAttack(this_01);
    bVar7 = false;
    local_cc = *(float *)(ZombieDoorPoundDamage._28_4_ + 0x2c) * 20.0;
  }
  else if ((*(char **)(pCVar1 + 0x7c) == "func_door*") ||
          (cVar8 = CBaseEntity::ClassMatchesComplex(pCVar1,"func_door*"), cVar8 != '\0')) {
    piVar11 = (int *)__dynamic_cast();
    if (piVar11 == (int *)0x0) goto LAB_005622b0;
    (**(code **)(*piVar11 + 0x1ac))();
    bVar7 = false;
    pfVar17 = (float *)&stack0xfffffef4;
  }
  else if (this_02 == (CBaseEntity *)0x0) {
    iVar10 = (**(code **)(*(int *)this_00 + 0x144))();
    if (iVar10 == 0) {
      pcVar19 = "Claw.Hit";
    }
    else {
      CBaseEntity::EmitSound(pCVar1,"Claw.HitFlesh",0.0,(float *)0x0);
      pcVar19 = "HulkZombie.Punch";
    }
    CBaseEntity::EmitSound(this_00,pcVar19,0.0,(float *)0x0);
LAB_005622b0:
    bVar7 = false;
    pfVar17 = (float *)&stack0xfffffef4;
  }
  else {
    if (local_cc == 0.0) {
      return 0;
    }
    iVar10 = CBaseEntity::GetTeamNumber(this_02);
    cVar8 = IsASurvivorTeam(iVar10);
    if (cVar8 != '\0') {
      iVar10 = (**(code **)(*(int *)this_02 + 0x52c))();
      iVar13 = (**(code **)(*(int *)this_00 + 0x52c))();
      if (((iVar13 != 0) && (iVar10 != 0)) &&
         (((byte)(*(uint *)(iVar10 + 300) >> 0xb) & 1) !=
          ((byte)(*(uint *)(iVar13 + 300) >> 0xb) & 1))) {
        pVVar14 = (Vector *)(**(code **)(*(int *)this + 0x288))();
        iVar10 = CGlobalEntityList::FindEntityByClassnameWithin
                           ((CGlobalEntityList *)gEntList,(CBaseEntity *)0x0,"prop_door*",pVVar14,
                            40.0);
        if (((iVar10 != 0) && (piVar11 = (int *)__dynamic_cast(), piVar11 != (int *)0x0)) &&
           ((cVar8 = (**(code **)(*piVar11 + 0x478))(), cVar8 != '\0' && (piVar11[0x57d] == 0)))) {
          return 0;
        }
      }
      uVar5 = *(uint *)(this_02 + 0x3e68);
      piVar11 = (int *)&stack0xfffffef4;
      if (((uVar5 != 0xffffffff) &&
          (puVar15 = g_pEntityList + (uVar5 & 0xfff) * 0x10, piVar11 = (int *)&stack0xfffffef4,
          puVar15 != (undefined *)0xfffffffc)) &&
         ((piVar11 = (int *)&stack0xfffffef4, *(uint *)(puVar15 + 8) == uVar5 >> 0xc &&
          (pCVar6 = *(CTakeDamageInfo **)(puVar15 + 4), piVar11 = (int *)&stack0xfffffef4,
          pCVar6 != (CTakeDamageInfo *)0x0)))) {
        ClearMultiDamage();
        AngleVectors((QAngle *)(this + 0x3a8),local_b4,(Vector *)0x0,(Vector *)0x0);
        CTakeDamageInfo::CTakeDamageInfo
                  ((CTakeDamageInfo *)&local_7c,(CBaseEntity *)this,this_00,250.0,0x80,0);
        (**(code **)(*(int *)this + 0x700))();
        (**(code **)(*(int *)this_00 + 0x478))();
        CalculateMeleeDamageForce((CTakeDamageInfo *)&local_7c,local_a8,(Vector *)local_9c,1.0);
        CBaseEntity::DispatchTraceAttack(pCVar6,(Vector *)&local_7c,(CGameTrace *)local_b4);
        ApplyMultiDamage();
        piVar11 = (int *)&stack0xfffffeec;
      }
      uVar5 = *(uint *)(this_02 + 0x33c4);
      if ((((uVar5 != 0xffffffff) &&
           (puVar15 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar15 != (undefined *)0xfffffffc))
          && (*(uint *)(puVar15 + 8) == uVar5 >> 0xc)) &&
         (iVar10 = *(int *)(puVar15 + 4), iVar10 != 0)) {
        piVar11[1] = 0;
        *piVar11 = iVar10;
        piVar11[-1] = 0x56255d;
        CTerrorPlayer::ReleaseTongueVictim((CTerrorPlayer *)*piVar11,SUB41(piVar11[1],0));
      }
    }
    local_c4 = &local_7c;
    fVar3 = *(float *)(ZombieAttackMovementPenalty._28_4_ + 0x2c);
    if (fVar3 != *(float *)(this_00 + 0x2854)) {
      if (this_00[0x6c] == (CBaseEntity)0x0) {
        puVar4 = *(uint **)(this_00 + 0x30);
        if (puVar4 != (uint *)0x0) {
          *puVar4 = *puVar4 | 0x101;
          *piVar11 = (int)puVar4;
          piVar11[-1] = 0x562589;
          iVar10 = CBaseEdict::GetChangeAccessor((CBaseEdict *)*piVar11);
          *(undefined2 *)(iVar10 + 2) = 0;
        }
      }
      else {
        this_00[0x70] = (CBaseEntity)((byte)this_00[0x70] | 1);
      }
      *(float *)(this_00 + 0x2854) = fVar3;
    }
    *piVar11 = (int)local_c4;
    piVar11[-1] = 0x56212f;
    CRecipientFilter::CRecipientFilter((CRecipientFilter *)*piVar11);
    *piVar11 = (int)local_c4;
                    /* try { // try from 00562132 to 00562163 has its CatchHandler @ 00562738 */
    piVar11[-1] = 0x562137;
    CRecipientFilter::MakeReliable((CRecipientFilter *)*piVar11);
    piVar11[1] = (int)this_00;
    *piVar11 = (int)local_c4;
    piVar11[-1] = 0x562143;
    CRecipientFilter::AddRecipient((CRecipientFilter *)*piVar11,(CBasePlayer *)piVar11[1]);
    piVar11[1] = (int)"Splatter";
    *piVar11 = (int)local_c4;
    piVar11[-1] = 0x562153;
    UserMessageBegin((IRecipientFilter *)*piVar11,(char *)piVar11[1]);
    *piVar11 = 1;
    piVar11[-1] = 0x56215f;
    MessageWriteByte(*piVar11);
    piVar11[-1] = 0x562164;
    MessageEnd();
    *piVar11 = (int)local_c4;
    piVar11[-1] = 0x56216c;
    CRecipientFilter::~CRecipientFilter((CRecipientFilter *)*piVar11);
    bVar7 = true;
    pfVar17 = (float *)piVar11;
  }
  local_c4 = &local_7c;
  if (local_cc < 1.0) {
    uVar12 = 0;
  }
  else {
    iVar10 = *(int *)this;
    pfVar17[3] = *(float *)param_2;
    pfVar17[4] = *(float *)(param_2 + 4);
    fVar3 = *(float *)(param_2 + 8);
    pfVar17[2] = (float)pCVar1;
    pfVar17[5] = fVar3;
    pfVar17[1] = (float)this;
    *pfVar17 = (float)local_a8;
    pcVar2 = *(code **)(iVar10 + 0x700);
    pfVar17[-1] = 7.907971e-39;
    (*pcVar2)();
    *pfVar17 = (float)pCVar1;
    pfVar17[-1] = (float)this;
    pfVar17[-2] = 7.907997e-39;
    cVar8 = IsPhysicsTarget((CTankClaw *)pfVar17[-1],(CBaseEntity *)*pfVar17);
    local_d4 = 1.0;
    if (cVar8 != '\0') {
      if (((byte)pCVar1[0x14d] & 8) != 0) {
        pfVar17[-1] = (float)pCVar1;
        pfVar17[-2] = 7.910548e-39;
        CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar17[-1]);
        if (((byte)pCVar1[0x14d] & 8) != 0) {
          pfVar17[-1] = (float)pCVar1;
          pfVar17[-2] = 7.910586e-39;
          CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar17[-1]);
        }
      }
      pfVar17[8] = -NAN;
      pfVar17[7] = 0.0;
      pfVar17[6] = 0.0;
      pfVar17[3] = *(float *)(pCVar1 + 0x37c);
      pfVar17[4] = *(float *)(pCVar1 + 0x380);
      pfVar17[5] = *(float *)(pCVar1 + 900);
      *pfVar17 = (float)*(undefined4 *)(pCVar1 + 0x2e0);
      pfVar17[1] = *(float *)(pCVar1 + 0x2e4);
      fVar3 = *(float *)(pCVar1 + 0x2e8);
      pfVar17[-1] = (float)"tank_object_throw";
      pfVar17[2] = fVar3;
      pfVar17[-2] = 7.908194e-39;
      DispatchParticleEffect();
      pfVar17[1] = *(float *)param_2;
      pfVar17[2] = *(float *)(param_2 + 4);
      fVar3 = *(float *)(param_2 + 8);
      *pfVar17 = (float)pCVar1;
      pfVar17[3] = fVar3;
      pfVar17[-1] = (float)this;
      pfVar17[-2] = 7.908256e-39;
      lVar18 = (longdouble)GetPushForce();
      pfVar17[2] = 0.0;
      pfVar17[1] = (float)&CPhysicsProp::typeinfo;
      *pfVar17 = (float)&CBaseEntity::typeinfo;
      pfVar17[-1] = (float)pCVar1;
      local_d4 = (float)lVar18;
      pfVar17[-2] = 7.908309e-39;
      iVar10 = __dynamic_cast();
      if (iVar10 != 0) {
        fVar3 = *(float *)(gpGlobals + 0xc);
        *pfVar17 = (float)this_00;
        pfVar17[-1] = (float)iVar10;
        pfVar17[1] = fVar3 + 5.0;
        pfVar17[-2] = 7.908367e-39;
        CBreakableProp::SetPhysicsAttacker
                  ((CBreakableProp *)pfVar17[-1],(CBasePlayer *)*pfVar17,pfVar17[1]);
      }
    }
    bVar9 = 1;
    if (this_02 != (CBaseEntity *)0x0) {
      iVar10 = *(int *)this_02;
      pfVar17[-1] = (float)this_02;
      pcVar2 = *(code **)(iVar10 + 0x7e8);
      pfVar17[-2] = 7.908403e-39;
      bVar9 = (*pcVar2)();
      bVar9 = bVar9 ^ 1;
    }
    pfVar17[1] = (float)this_00;
    pfVar17[4] = 0.0;
    pfVar17[3] = 1.79366e-43;
    pfVar17[2] = local_cc;
    *pfVar17 = (float)this;
    pfVar17[-1] = (float)local_c4;
    pfVar17[-2] = 7.908504e-39;
    CTakeDamageInfo::CTakeDamageInfo
              ((CTakeDamageInfo *)pfVar17[-1],(CBaseEntity *)*pfVar17,(CBaseEntity *)pfVar17[1],
               pfVar17[2],(int)pfVar17[3],(int)pfVar17[4]);
    iVar10 = *(int *)this_00;
    *pfVar17 = (float)this_00;
    pfVar17[-1] = (float)local_9c;
    pcVar2 = *(code **)(iVar10 + 0x478);
    pfVar17[-2] = 7.908525e-39;
    (*pcVar2)();
    pfVar17[-2] = (float)extraout_EDX;
    pfVar17[-1] = (float)local_a8;
    pfVar17[1] = local_d4;
    pfVar17[-2] = (float)local_c4;
    *pfVar17 = (float)local_9c;
    pfVar17[-3] = 7.908585e-39;
    CalculateMeleeDamageForce
              ((CTakeDamageInfo *)pfVar17[-2],(Vector *)pfVar17[-1],(Vector *)*pfVar17,pfVar17[1]);
    pfVar17[-3] = 7.908592e-39;
    ClearMultiDamage();
    pfVar17[1] = (float)param_1;
    pfVar17[-1] = (float)local_c4;
    *pfVar17 = (float)param_2;
    pfVar17[-2] = (float)pCVar1;
    pfVar17[-3] = 7.908641e-39;
    CBaseEntity::DispatchTraceAttack
              ((CTakeDamageInfo *)pfVar17[-2],(Vector *)pfVar17[-1],(CGameTrace *)*pfVar17);
    pfVar17[-3] = 7.908648e-39;
    ApplyMultiDamage();
    if (cVar8 != '\0') {
      pfVar17[1] = 0.0;
      *pfVar17 = (float)&CPhysicsProp::typeinfo;
      pfVar17[-1] = (float)&CBaseEntity::typeinfo;
      pfVar17[-2] = (float)pCVar1;
      pfVar17[-3] = 7.908737e-39;
      piVar11 = (int *)__dynamic_cast();
      if (piVar11 != (int *)0x0) {
        pfVar17[-2] = (float)piVar11;
        pfVar17[-3] = 7.90877e-39;
        CPhysicsProp::OnHitByTank((CPhysicsProp *)pfVar17[-2]);
        if ((*(char *)((int)piVar11 + 0x105) == '\x02') && (piVar11[0x596] == 0)) {
          iVar10 = *piVar11;
          pfVar17[-2] = (float)piVar11;
          pcVar2 = *(code **)(iVar10 + 0x470);
          pfVar17[-3] = 7.910628e-39;
          cVar8 = (*pcVar2)();
          if (cVar8 == '\0') goto LAB_00561eda;
        }
        pfVar17[-3] = 7.908829e-39;
        cVar8 = CTerrorGameRules::HasPlayerControlledZombies();
        if (cVar8 == '\0') {
          pfVar17[-1] = (float)piVar11;
          pfVar17[-2] = (float)TheDirector;
          pfVar17[-3] = 7.911433e-39;
          CDirector::FadeOutOnAllTanksDead((CDirector *)pfVar17[-2],(CBaseEntity *)pfVar17[-1]);
        }
        else {
          pfVar17[1] = 60.0;
          *pfVar17 = 40.0;
          pfVar17[-1] = (float)piVar11;
          pfVar17[-2] = (float)TheDirector;
          pfVar17[-3] = 7.908912e-39;
          CDirector::FadeOutAfterDelay
                    ((CDirector *)pfVar17[-2],(CBaseEntity *)pfVar17[-1],*pfVar17,pfVar17[1]);
        }
      }
    }
LAB_00561eda:
    if ((bVar9 != 0) && (this_02 != (CBaseEntity *)0x0)) {
      iVar10 = *(int *)this_02;
      pfVar17[-2] = (float)this_02;
      pcVar2 = *(code **)(iVar10 + 0x7e8);
      pfVar17[-3] = 7.910138e-39;
      cVar8 = (*pcVar2)();
      if (cVar8 != '\0') {
        uVar12 = 1;
        pfVar17 = pfVar17 + -2;
        goto LAB_00561ee4;
      }
    }
    uVar12 = 0;
    pfVar17 = pfVar17 + -2;
  }
LAB_00561ee4:
  piVar16 = (int *)pfVar17;
  if (bVar7) {
    iVar10 = *(int *)this;
    pfVar17[2] = (float)uVar12;
    *pfVar17 = (float)this;
    pfVar17[1] = (float)this_02;
    pcVar2 = *(code **)(iVar10 + 0x710);
    pfVar17[-1] = 7.908992e-39;
    (*pcVar2)();
  }
LAB_005618cd:
  local_c4 = &local_7c;
  local_7c = *(undefined4 *)(param_1 + 0xc);
  local_64 = 0;
  local_34 = *(undefined2 *)(param_1 + 0x40);
  local_60 = 0;
  local_78 = *(undefined4 *)(param_1 + 0x10);
  local_5c = 0;
  local_74 = *(undefined4 *)(param_1 + 0x14);
  local_28 = *(undefined4 *)(param_1 + 0x50);
  local_70 = *(undefined4 *)param_1;
  local_58 = 0;
  local_6c = *(undefined4 *)(param_1 + 4);
  local_68 = *(undefined4 *)(param_1 + 8);
  local_54 = 0;
  local_50 = 0;
  local_4c = 0;
  local_44 = 0x3f800000;
  local_38 = 0;
  local_40 = 0;
  local_3c = 0;
  local_30 = 0;
  local_24 = 0;
  local_23 = 0;
  local_2c = 4;
  if (*(int *)(*(int *)(param_1 + 0x4c) + 0x30) == 0) {
    local_48 = 0;
  }
  else {
    local_48 = *(int *)(*(int *)(param_1 + 0x4c) + 0x30) - *(int *)(gpGlobals + 0x58) >> 4;
  }
  *piVar16 = (int)local_9c;
  piVar16[-1] = 0x5619a5;
  CRecipientFilter::CRecipientFilter((CRecipientFilter *)*piVar16);
  *piVar16 = (int)local_9c;
  local_9c[0] = &PTR__CPASFilter_00bfaf28;
  piVar16[1] = (int)local_c4;
                    /* try { // try from 005619bc to 005619c0 has its CatchHandler @ 00562750 */
  piVar16[-1] = 0x5619c1;
  CRecipientFilter::AddRecipientsByPAS((CRecipientFilter *)*piVar16,(Vector *)piVar16[1]);
  if (((byte)this_00[0x14d] & 8) != 0) {
    *piVar16 = (int)this_00;
    piVar16[-1] = 0x561a68;
    CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar16);
  }
  local_58 = *(undefined4 *)(this_00 + 0x37c);
  local_54 = *(undefined4 *)(this_00 + 0x380);
  local_50 = *(undefined4 *)(this_00 + 900);
  piVar16[3] = (int)local_c4;
  piVar16[2] = (int)"KnifeSlash";
  piVar16[1] = 0;
  *piVar16 = (int)local_9c;
  local_4c = 1;
                    /* try { // try from 00561a19 to 00561ae1 has its CatchHandler @ 00562762 */
  piVar16[-1] = 0x561a1e;
  DispatchEffect((IRecipientFilter *)*piVar16,(float)piVar16[1],(char *)piVar16[2],
                 (CEffectData *)piVar16[3]);
  if (this_02 != (CBaseEntity *)0x0) {
    *piVar16 = (int)this_02;
    piVar16[-1] = 0x561a30;
    iVar10 = CBaseEntity::GetTeamNumber((CBaseEntity *)*piVar16);
    *piVar16 = iVar10;
    piVar16[-1] = 0x561a38;
    cVar8 = IsASurvivorTeam(iVar10);
    if (cVar8 != '\0') {
      if (*(int *)(this_00 + 0x3a78) != 0) {
        if (this_00[0x6c] == (CBaseEntity)0x0) {
          puVar4 = *(uint **)(this_00 + 0x30);
          if (puVar4 != (uint *)0x0) {
            *puVar4 = *puVar4 | 0x101;
            *piVar16 = (int)puVar4;
                    /* try { // try from 00561f32 to 00561f36 has its CatchHandler @ 00562762 */
            piVar16[-1] = 0x561f37;
            iVar10 = CBaseEdict::GetChangeAccessor((CBaseEdict *)*piVar16);
            *(undefined2 *)(iVar10 + 2) = 0;
          }
        }
        else {
          this_00[0x70] = (CBaseEntity)((byte)this_00[0x70] | 1);
        }
        *(undefined4 *)(this_00 + 0x3a78) = 0;
      }
      pCVar1 = this_00 + 0x3a7c;
      *piVar16 = (int)pCVar1;
      piVar16[-1] = 0x561a8c;
      lVar18 = (longdouble)CountdownTimer::Now();
      if ((float)lVar18 + 2.0 != *(float *)(this_00 + 0x3a84)) {
        iVar10 = *(int *)(this_00 + 0x3a7c);
        *piVar16 = (int)pCVar1;
        piVar16[1] = (int)(this_00 + 0x3a84);
                    /* try { // try from 005621e3 to 005621e5 has its CatchHandler @ 00562762 */
        pcVar2 = *(code **)(iVar10 + 4);
        piVar16[-1] = 0x5621e6;
        (*pcVar2)();
        *(float *)(this_00 + 0x3a84) = (float)lVar18 + 2.0;
      }
      if (*(float *)(this_00 + 0x3a80) != 2.0) {
        iVar10 = *(int *)(this_00 + 0x3a7c);
        *piVar16 = (int)pCVar1;
        piVar16[1] = (int)(this_00 + 0x3a80);
        pcVar2 = *(code **)(iVar10 + 4);
        piVar16[-1] = 0x561ae2;
        (*pcVar2)();
        *(undefined4 *)(this_00 + 0x3a80) = 0x40000000;
      }
    }
  }
  *piVar16 = (int)local_9c;
  local_9c[0] = &PTR__CPASFilter_00bfaf28;
  piVar16[-1] = 0x561a4e;
  CRecipientFilter::~CRecipientFilter((CRecipientFilter *)*piVar16);
  return 0;
}

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)