L L4D2node

CTerrorWeapon::OnSwingStart

0x00572740 · 4942 bytes · __thiscall

_ZN13CTerrorWeapon12OnSwingStartEv

Decompiled

undefined (1 param)

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CTerrorWeapon::OnSwingStart() */

void __thiscall CTerrorWeapon::OnSwingStart(CTerrorWeapon *this)

{
  float fVar1;
  code *pcVar2;
  char cVar3;
  CTerrorPlayer *this_00;
  QAngle *pQVar4;
  CTerrorPlayer *pCVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  int *piVar10;
  int *piVar11;
  undefined4 *puVar12;
  int iVar13;
  float *pfVar14;
  float *pfVar15;
  CTerrorPlayer CVar16;
  longdouble lVar17;
  float fVar18;
  float fVar19;
  undefined1 auStackY_1f8 [4];
  undefined1 auStackY_1f4 [4];
  undefined1 auStackY_1f0 [8];
  undefined1 auStackY_1e8 [16];
  float afStackY_1d8 [3];
  float local_1bc [14];
  CTerrorPlayer *local_184;
  CTerrorPlayer *local_180;
  float local_17c;
  float local_178;
  float local_174;
  float local_170;
  float local_168;
  float local_164;
  float local_160;
  float local_15c;
  float local_158;
  float local_154;
  float local_150;
  float local_14c;
  float local_148;
  float local_144;
  float local_140;
  float local_13c;
  float local_138;
  float local_134;
  float local_130;
  float local_12c;
  float local_128;
  float local_124;
  float local_120;
  float local_11c;
  float local_118;
  undefined **local_110;
  CTerrorPlayer *local_10c;
  float local_108;
  float local_104;
  float local_100;
  int local_fc;
  float local_f8;
  float local_f4;
  float local_f0;
  float local_ec;
  char local_e8;
  CTerrorPlayer *local_e4;
  undefined4 local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  float local_d4;
  undefined4 local_d0;
  float local_cc;
  float local_c8;
  float local_c4;
  float local_bc;
  float local_b8;
  float local_b4;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_8c;
  undefined1 local_88;
  bool local_87;
  float local_70;
  float local_6c;
  float local_68;
  undefined1 local_64 [32];
  float local_44;
  int local_24;
  
  pfVar14 = (float *)&stack0xfffffe34;
  pfVar15 = (float *)&stack0xfffffe34;
  this_00 = (CTerrorPlayer *)GetPlayerOwner(this);
  if (this_00 == (CTerrorPlayer *)0x0) {
    return;
  }
  CBaseCombatWeapon::GetWpnData((CBaseCombatWeapon *)this);
  (**(code **)(*(int *)this_00 + 0x850))();
  this[0x1791] = (CTerrorWeapon)0x0;
  *(undefined4 *)(this + 0x1794) = 0xffffffff;
  SuppressHelpingHands(this,0.0);
  pcVar2 = *(code **)(*(int *)this + 0x3f0);
  (**(code **)(*(int *)this + 0x6c0))();
  (*pcVar2)();
  CTerrorPlayer::InhibitCalm(this_00,2.0);
  local_110 = &PTR_operator___00c53020;
  local_e0 = 0;
  local_dc = 0;
  local_d8 = 0;
  local_d4 = 0.0;
  local_d0 = 0;
                    /* try { // try from 00572829 to 00572840 has its CatchHandler @ 00573b15 */
  local_10c = this_00;
  pQVar4 = (QAngle *)(**(code **)(*(int *)this_00 + 0x238))();
  AngleVectors(pQVar4,(Vector *)&local_108);
  iVar13 = 1;
  local_fc = 3;
  local_f8 = -1.0;
  local_f4 = -1.0;
  local_f0 = 150.0;
  local_e4 = (CTerrorPlayer *)0x0;
  local_ec = 50.0;
  local_e8 = '\0';
  if (0 < *(int *)(gpGlobals + 0x14)) {
    do {
      while( true ) {
        *pfVar14 = (float)iVar13;
        pfVar14[-1] = 8.004358e-39;
        pCVar5 = (CTerrorPlayer *)UTIL_PlayerByIndex((int)*pfVar14);
        if ((pCVar5 != (CTerrorPlayer *)0x0) && (*(int *)(pCVar5 + 0x30) != 0)) break;
LAB_005728d0:
        iVar13 = iVar13 + 1;
        pfVar15 = pfVar14;
        if (*(int *)(gpGlobals + 0x14) < iVar13) goto LAB_0057290c;
      }
      if (*(int *)(pCVar5 + 0x30) - *(int *)(gpGlobals + 0x58) >> 4 != 0) {
        iVar8 = *(int *)pCVar5;
        *pfVar14 = (float)pCVar5;
                    /* try { // try from 005728a5 to 00572997 has its CatchHandler @ 00573b22 */
        pcVar2 = *(code **)(iVar8 + 0x16c);
        pfVar14[-1] = 8.004277e-39;
        cVar3 = (*pcVar2)();
        if ((cVar3 != '\0') && (*(int *)(pCVar5 + 0x1f6c) != 2)) {
          iVar8 = *(int *)pCVar5;
          *pfVar14 = (float)pCVar5;
          pcVar2 = *(code **)(iVar8 + 0x148);
          pfVar14[-1] = 8.004311e-39;
          iVar8 = (*pcVar2)();
          if (iVar8 == 0) {
            local_184 = pCVar5;
            local_17c = 0.0;
            local_178 = 0.0;
            if (___atan2f_finite == 0.0) {
              local_160 = 0.0;
            }
            else {
              pfVar14[0xb] = (float)"TargetScan()";
              pfVar14[10] = (float)"Unaccounted";
              pfVar14[9] = (float)"(%s)%s";
              pfVar14[8] = (float)&TargetScan<CBaseCombatCharacter>::
                                   operator()(CBaseCombatCharacter*)::tm_fmt;
              pfVar14[7] = 6.5861e-44;
              pfVar14[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
              pfVar14[5] = 0.0;
              pfVar14[3] = 0.0;
              pfVar14[4] = 0.0;
              pfVar14[2] = 0.0;
              pfVar14[1] = (float)&local_17c;
              *pfVar14 = ___atan2f_finite;
              pcVar2 = *(code **)((int)___atan2f_finite + 0x50);
              pfVar14[-1] = 8.008614e-39;
              (*pcVar2)();
              local_160 = ___atan2f_finite;
            }
            iVar8 = _DAT_0105db00;
            local_168 = local_17c;
            local_164 = local_178;
            if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 005734fe to 00573502 has its CatchHandler @ 00573ab7 */
              pfVar14[-1] = 8.008705e-39;
              iVar7 = ThreadGetCurrentId();
              if (iVar8 == iVar7) {
                if ((char *)*_DAT_0105d15c != "TargetScan()") {
                  pfVar14[4] = 0.0;
                  pfVar14[3] = (float)"Unaccounted";
                  pfVar14[2] = 1.4013e-45;
                  pfVar14[1] = (float)"TargetScan()";
                  *pfVar14 = (float)_DAT_0105d15c;
                    /* try { // try from 00573691 to 005736a2 has its CatchHandler @ 00573ab7 */
                  pfVar14[-1] = 8.00927e-39;
                  _DAT_0105d15c =
                       (int *)CVProfNode::GetSubNode
                                        ((char *)*pfVar14,(int)pfVar14[1],(char *)pfVar14[2],
                                         (int)pfVar14[3]);
                }
                *pfVar14 = (float)_DAT_0105d15c;
                pfVar14[-1] = 8.009288e-39;
                CVProfNode::EnterScope();
                DAT_0105d158 = '\0';
              }
            }
            pfVar15 = pfVar14;
            if (local_10c != local_184) {
              iVar8 = *(int *)local_184;
              *pfVar14 = (float)local_184;
                    /* try { // try from 0057351e to 00573542 has its CatchHandler @ 00573ae7 */
              pcVar2 = *(code **)(iVar8 + 300);
              pfVar14[-1] = 8.008751e-39;
              cVar3 = (*pcVar2)();
              if (cVar3 != '\0') {
                if (local_fc != -1) {
                  *pfVar14 = (float)local_184;
                  pfVar14[-1] = 8.008795e-39;
                  iVar8 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar14);
                  if (iVar8 != local_fc) goto LAB_0057354f;
                }
                iVar8 = *(int *)local_184;
                *pfVar14 = (float)local_184;
                    /* try { // try from 005736ba to 00573a85 has its CatchHandler @ 00573ae7 */
                pcVar2 = *(code **)(iVar8 + 0x558);
                pfVar14[-1] = 8.009329e-39;
                cVar3 = (*pcVar2)();
                if (cVar3 == '\0') {
                  iVar8 = *(int *)local_10c;
                  pfVar14[1] = (float)local_10c;
                  *pfVar14 = (float)&local_150;
                  pcVar2 = *(code **)(iVar8 + 0x234);
                  pfVar14[-1] = 8.009378e-39;
                  (*pcVar2)();
                  local_140 = local_104 * local_ec + local_14c;
                  local_13c = local_100 * local_ec + local_148;
                  local_144 = local_ec * local_108 + local_150;
                  iVar8 = *(int *)local_184;
                  pfVar14[-1] = (float)local_184;
                  pcVar2 = *(code **)(iVar8 + 0x288);
                  pfVar14[-2] = 8.009529e-39;
                  uVar9 = (*pcVar2)();
                  pfVar14[3] = 0.0;
                  pfVar14[2] = (float)&local_138;
                  pfVar14[1] = (float)&local_144;
                  *pfVar14 = (float)&local_150;
                  pfVar14[-1] = (float)uVar9;
                  pfVar14[-2] = 8.009594e-39;
                  CalcClosestPointOnLineSegment
                            ((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
                             (Vector *)pfVar14[2],(float *)pfVar14[3]);
                  pCVar5 = local_184;
                  if (((byte)local_184[0x14d] & 8) != 0) {
                    pfVar14[-1] = (float)local_184;
                    pfVar14[-2] = 8.009631e-39;
                    CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar14[-1]);
                  }
                  local_150 = *(float *)(pCVar5 + 0x2e0);
                  local_14c = *(float *)(pCVar5 + 0x2e4);
                  local_148 = *(float *)(pCVar5 + 0x2e8);
                  iVar8 = *(int *)(local_184 + 0x194);
                  pfVar14[-1] = (float)(local_184 + 0x194);
                  pcVar2 = *(code **)(iVar8 + 8);
                  pfVar14[-2] = 8.009766e-39;
                  local_144 = local_150;
                  local_140 = local_14c;
                  local_13c = local_148;
                  iVar8 = (*pcVar2)();
                  fVar18 = *(float *)(iVar8 + 8);
                  pfVar14[2] = (float)&local_15c;
                  *pfVar14 = (float)&local_150;
                  pfVar14[3] = 0.0;
                  pfVar14[1] = (float)&local_144;
                  pfVar14[-1] = (float)&local_138;
                  local_13c = local_13c + fVar18;
                  pfVar14[-2] = 8.00986e-39;
                  CalcClosestPointOnLineSegment
                            ((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
                             (Vector *)pfVar14[2],(float *)pfVar14[3]);
                  if (local_e8 != '\0') {
                    pfVar14[5] = -1.0;
                    pfVar14[4] = 1.4013e-45;
                    pfVar14[3] = 3.57331e-43;
                    pfVar14[2] = 3.57331e-43;
                    pfVar14[1] = 3.57331e-43;
                    *pfVar14 = 1.0;
                    pfVar14[-1] = (float)&local_15c;
                    pfVar14[-2] = 8.009951e-39;
                    NDebugOverlay::Cross3D
                              ((Vector *)pfVar14[-1],*pfVar14,(int)pfVar14[1],(int)pfVar14[2],
                               (int)pfVar14[3],*(bool *)(pfVar14 + 4),pfVar14[5]);
                    pfVar14[5] = -1.0;
                    pfVar14[4] = 1.4013e-45;
                    pfVar14[3] = 0.0;
                    pfVar14[2] = 0.0;
                    pfVar14[1] = 3.57331e-43;
                    *pfVar14 = (float)&local_150;
                    pfVar14[-1] = (float)&local_144;
                    pfVar14[-2] = 8.010032e-39;
                    NDebugOverlay::Line((Vector *)pfVar14[-1],(Vector *)*pfVar14,(int)pfVar14[1],
                                        (int)pfVar14[2],(int)pfVar14[3],*(bool *)(pfVar14 + 4),
                                        pfVar14[5]);
                  }
                  iVar8 = *(int *)local_10c;
                  *pfVar14 = (float)local_10c;
                  pfVar14[-1] = (float)&local_12c;
                  pcVar2 = *(code **)(iVar8 + 0x234);
                  pfVar14[-2] = 8.01007e-39;
                  (*pcVar2)();
                  pfVar14[-2] = (float)&local_120;
                  local_120 = local_15c - local_12c;
                  local_11c = local_158 - local_128;
                  local_118 = local_154 - local_124;
                  pfVar14[-3] = 8.010195e-39;
                  VectorNormalize((Vector *)pfVar14[-2]);
                  pfVar14[-1] = (float)&local_15c;
                  *pfVar14 = (float)&local_cc;
                  pfVar14[-2] = (float)(local_10c + 0x194);
                  pfVar14[-3] = 8.010244e-39;
                  CCollisionProperty::CalcNearestPoint
                            ((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],
                             (Vector *)*pfVar14);
                  pfVar14[-1] = (float)&local_cc;
                  *pfVar14 = (float)&local_70;
                  pfVar14[-2] = (float)(local_184 + 0x194);
                  pfVar14[-3] = 8.010286e-39;
                  CCollisionProperty::CalcNearestPoint
                            ((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],
                             (Vector *)*pfVar14);
                  pfVar15 = pfVar14 + -2;
                  if ((SQRT((local_c8 - local_6c) * (local_c8 - local_6c) +
                            (local_cc - local_70) * (local_cc - local_70) +
                            (local_c4 - local_68) * (local_c4 - local_68)) <= local_f0) &&
                     (fVar18 = local_118 * local_100 + local_120 * local_108 + local_11c * local_104
                     , pfVar15 = pfVar14 + -2, local_f8 < fVar18)) {
                    *pfVar14 = 1.4013e-45;
                    pfVar14[-1] = (float)local_184;
                    pfVar14[-2] = (float)local_10c;
                    pfVar14[-3] = 8.010572e-39;
                    cVar3 = CBaseCombatCharacter::IsAbleToSee();
                    pfVar15 = pfVar14 + -2;
                    if (cVar3 != '\0') {
                      if (local_f4 <= fVar18) {
                        local_f4 = fVar18;
                        local_e4 = local_184;
                      }
                      *pfVar14 = (float)&local_184;
                      pfVar14[-1] = local_d4;
                      pfVar14[-2] = (float)&local_e0;
                      pfVar14[-3] = 8.010682e-39;
                      CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
                      InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
                                    *)pfVar14[-2],(int)pfVar14[-1],(CBaseCombatCharacter **)*pfVar14
                                  );
                      pfVar15 = pfVar14 + -2;
                    }
                  }
                }
              }
            }
LAB_0057354f:
            iVar8 = _DAT_0105db00;
            if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
              pfVar15[-1] = 8.008854e-39;
              iVar7 = ThreadGetCurrentId();
              if (iVar8 == iVar7) {
                *pfVar15 = (float)_DAT_0105d15c;
                pfVar15[-1] = 8.009148e-39;
                cVar3 = CVProfNode::ExitScope();
                if (cVar3 != '\0') {
                  _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
                }
                DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
              }
            }
            pfVar14 = pfVar15;
            if (local_160 != 0.0) {
              pfVar15[5] = 0.0;
              pfVar15[4] = 0.0;
              pfVar15[3] = 0.0;
              *pfVar15 = local_160;
              pfVar15[1] = local_168;
              pfVar15[2] = local_164;
              pcVar2 = *(code **)((int)local_160 + 0x54);
              pfVar15[-1] = 8.008955e-39;
              (*pcVar2)();
            }
          }
        }
        goto LAB_005728d0;
      }
      iVar13 = iVar13 + 1;
      pfVar15 = pfVar14;
    } while (iVar13 <= *(int *)(gpGlobals + 0x14));
  }
LAB_0057290c:
  *(undefined4 *)((int)pfVar15 + -4) = 0x572911;
  iVar13 = TheNextBots();
  uVar6 = (uint)*(ushort *)(iVar13 + 0x10);
  if (uVar6 != 0xffff) {
    iVar8 = *(int *)(iVar13 + 4);
    pfVar14 = pfVar15;
    do {
      piVar10 = *(int **)(iVar8 + uVar6 * 8);
      iVar8 = *piVar10;
      *pfVar14 = (float)piVar10;
                    /* try { // try from 00572ac2 to 00572b97 has its CatchHandler @ 00573b22 */
      pcVar2 = *(code **)(iVar8 + 0xb4);
      pfVar14[-1] = 8.005035e-39;
      local_180 = (CTerrorPlayer *)(*pcVar2)();
      local_174 = 0.0;
      local_170 = 0.0;
      if (___atan2f_finite == 0.0) {
        local_154 = 0.0;
      }
      else {
        pfVar14[0xb] = (float)"TargetScan()";
        pfVar14[10] = (float)"Unaccounted";
        pfVar14[9] = (float)"(%s)%s";
        pfVar14[8] = (float)&TargetScan<CBaseCombatCharacter>::operator()(CBaseCombatCharacter*)::
                             tm_fmt;
        pfVar14[7] = 6.5861e-44;
        pfVar14[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
        pfVar14[5] = 0.0;
        pfVar14[3] = 0.0;
        pfVar14[4] = 0.0;
        pfVar14[2] = 0.0;
        pfVar14[1] = (float)&local_174;
        *pfVar14 = ___atan2f_finite;
        pcVar2 = *(code **)((int)___atan2f_finite + 0x50);
        pfVar14[-1] = 8.004609e-39;
        (*pcVar2)();
        local_154 = ___atan2f_finite;
      }
      iVar8 = _DAT_0105db00;
      local_15c = local_174;
      local_158 = local_170;
      if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 005729d5 to 005729d9 has its CatchHandler @ 00573b19 */
        pfVar14[-1] = 8.004702e-39;
        iVar7 = ThreadGetCurrentId();
        if (iVar8 == iVar7) {
          if ((char *)*_DAT_0105d15c != "TargetScan()") {
            pfVar14[4] = 0.0;
            pfVar14[3] = (float)"Unaccounted";
            pfVar14[2] = 1.4013e-45;
            pfVar14[1] = (float)"TargetScan()";
            *pfVar14 = (float)_DAT_0105d15c;
                    /* try { // try from 00572c10 to 00572c21 has its CatchHandler @ 00573b19 */
            pfVar14[-1] = 8.005502e-39;
            _DAT_0105d15c =
                 (int *)CVProfNode::GetSubNode
                                  ((char *)*pfVar14,(int)pfVar14[1],(char *)pfVar14[2],
                                   (int)pfVar14[3]);
          }
          *pfVar14 = (float)_DAT_0105d15c;
          pfVar14[-1] = 8.00552e-39;
          CVProfNode::EnterScope();
          DAT_0105d158 = '\0';
        }
      }
      pfVar15 = pfVar14;
      if (local_10c != local_180) {
        iVar8 = *(int *)local_180;
        *pfVar14 = (float)local_180;
                    /* try { // try from 005729f5 to 00572a19 has its CatchHandler @ 00573af7 */
        pcVar2 = *(code **)(iVar8 + 300);
        pfVar14[-1] = 8.004748e-39;
        cVar3 = (*pcVar2)();
        if (cVar3 != '\0') {
          if (local_fc != -1) {
            *pfVar14 = (float)local_180;
            pfVar14[-1] = 8.004791e-39;
            iVar8 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar14);
            if (iVar8 != local_fc) goto LAB_00572a30;
          }
          iVar8 = *(int *)local_180;
          *pfVar14 = (float)local_180;
                    /* try { // try from 00572c6b to 00573021 has its CatchHandler @ 00573af7 */
          pcVar2 = *(code **)(iVar8 + 0x558);
          pfVar14[-1] = 8.005631e-39;
          cVar3 = (*pcVar2)();
          if (cVar3 == '\0') {
            iVar8 = *(int *)local_10c;
            pfVar14[1] = (float)local_10c;
            *pfVar14 = (float)&local_144;
            pcVar2 = *(code **)(iVar8 + 0x234);
            pfVar14[-1] = 8.00568e-39;
            (*pcVar2)();
            local_134 = local_104 * local_ec + local_140;
            local_130 = local_100 * local_ec + local_13c;
            local_138 = local_ec * local_108 + local_144;
            iVar8 = *(int *)local_180;
            pfVar14[-1] = (float)local_180;
            pcVar2 = *(code **)(iVar8 + 0x288);
            pfVar14[-2] = 8.005831e-39;
            uVar9 = (*pcVar2)();
            pfVar14[3] = 0.0;
            pfVar14[2] = (float)&local_12c;
            pfVar14[1] = (float)&local_138;
            *pfVar14 = (float)&local_144;
            pfVar14[-1] = (float)uVar9;
            pfVar14[-2] = 8.005896e-39;
            CalcClosestPointOnLineSegment
                      ((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
                       (Vector *)pfVar14[2],(float *)pfVar14[3]);
            pCVar5 = local_180;
            if (((byte)local_180[0x14d] & 8) != 0) {
              pfVar14[-1] = (float)local_180;
              pfVar14[-2] = 8.005933e-39;
              CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar14[-1]);
            }
            local_144 = *(float *)(pCVar5 + 0x2e0);
            local_140 = *(float *)(pCVar5 + 0x2e4);
            local_13c = *(float *)(pCVar5 + 0x2e8);
            iVar8 = *(int *)(local_180 + 0x194);
            pfVar14[-1] = (float)(local_180 + 0x194);
            pcVar2 = *(code **)(iVar8 + 8);
            pfVar14[-2] = 8.006068e-39;
            local_138 = local_144;
            local_134 = local_140;
            local_130 = local_13c;
            iVar8 = (*pcVar2)();
            fVar18 = *(float *)(iVar8 + 8);
            pfVar14[2] = (float)&local_150;
            pfVar14[3] = 0.0;
            pfVar14[1] = (float)&local_138;
            *pfVar14 = (float)&local_144;
            pfVar14[-1] = (float)&local_12c;
            local_130 = local_130 + fVar18;
            pfVar14[-2] = 8.006153e-39;
            CalcClosestPointOnLineSegment
                      ((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
                       (Vector *)pfVar14[2],(float *)pfVar14[3]);
            if (local_e8 != '\0') {
              pfVar14[5] = -1.0;
              pfVar14[4] = 1.4013e-45;
              pfVar14[3] = 3.57331e-43;
              pfVar14[2] = 3.57331e-43;
              pfVar14[1] = 3.57331e-43;
              *pfVar14 = 1.0;
              pfVar14[-1] = (float)&local_150;
              pfVar14[-2] = 8.006245e-39;
              NDebugOverlay::Cross3D
                        ((Vector *)pfVar14[-1],*pfVar14,(int)pfVar14[1],(int)pfVar14[2],
                         (int)pfVar14[3],*(bool *)(pfVar14 + 4),pfVar14[5]);
              pfVar14[5] = -1.0;
              pfVar14[4] = 1.4013e-45;
              pfVar14[3] = 0.0;
              pfVar14[2] = 0.0;
              pfVar14[1] = 3.57331e-43;
              *pfVar14 = (float)&local_144;
              pfVar14[-1] = (float)&local_138;
              pfVar14[-2] = 8.006326e-39;
              NDebugOverlay::Line((Vector *)pfVar14[-1],(Vector *)*pfVar14,(int)pfVar14[1],
                                  (int)pfVar14[2],(int)pfVar14[3],*(bool *)(pfVar14 + 4),pfVar14[5])
              ;
            }
            iVar8 = *(int *)local_10c;
            *pfVar14 = (float)local_10c;
            pfVar14[-1] = (float)&local_70;
            pcVar2 = *(code **)(iVar8 + 0x234);
            pfVar14[-2] = 8.00636e-39;
            (*pcVar2)();
            pfVar14[-2] = (float)&local_120;
            local_120 = local_150 - local_70;
            local_11c = local_14c - local_6c;
            local_118 = local_148 - local_68;
            pfVar14[-3] = 8.006472e-39;
            VectorNormalize((Vector *)pfVar14[-2]);
            pfVar14[-1] = (float)&local_150;
            *pfVar14 = (float)&local_cc;
            pfVar14[-2] = (float)(local_10c + 0x194);
            pfVar14[-3] = 8.00652e-39;
            CCollisionProperty::CalcNearestPoint
                      ((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],(Vector *)*pfVar14);
            *pfVar14 = (float)&local_70;
            pfVar14[-1] = (float)&local_cc;
            pfVar14[-2] = (float)(local_180 + 0x194);
            pfVar14[-3] = 8.006558e-39;
            CCollisionProperty::CalcNearestPoint
                      ((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],(Vector *)*pfVar14);
            pfVar15 = pfVar14 + -2;
            if ((SQRT((local_c8 - local_6c) * (local_c8 - local_6c) +
                      (local_c4 - local_68) * (local_c4 - local_68) +
                      (local_cc - local_70) * (local_cc - local_70)) <= local_f0) &&
               (fVar18 = local_118 * local_100 + local_120 * local_108 + local_11c * local_104,
               pfVar15 = pfVar14 + -2, local_f8 < fVar18)) {
              *pfVar14 = 1.4013e-45;
              pfVar14[-1] = (float)local_180;
              pfVar14[-2] = (float)local_10c;
              pfVar14[-3] = 8.006844e-39;
              cVar3 = CBaseCombatCharacter::IsAbleToSee();
              pfVar15 = pfVar14 + -2;
              if (cVar3 != '\0') {
                if (local_f4 <= fVar18) {
                  local_f4 = fVar18;
                  local_e4 = local_180;
                }
                *pfVar14 = (float)&local_180;
                pfVar14[-1] = local_d4;
                pfVar14[-2] = (float)&local_e0;
                pfVar14[-3] = 8.006955e-39;
                CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
                InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
                              *)pfVar14[-2],(int)pfVar14[-1],(CBaseCombatCharacter **)*pfVar14);
                pfVar15 = pfVar14 + -2;
              }
            }
          }
        }
      }
LAB_00572a30:
      iVar8 = _DAT_0105db00;
      if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
        pfVar15[-1] = 8.004864e-39;
        iVar7 = ThreadGetCurrentId();
        if (iVar8 == iVar7) {
          *pfVar15 = (float)_DAT_0105d15c;
          pfVar15[-1] = 8.005558e-39;
          cVar3 = CVProfNode::ExitScope();
          if (cVar3 != '\0') {
            _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
          }
          DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
        }
      }
      if (local_154 != 0.0) {
        pfVar15[5] = 0.0;
        pfVar15[4] = 0.0;
        pfVar15[3] = 0.0;
        *pfVar15 = local_154;
        pfVar15[1] = local_15c;
        pfVar15[2] = local_158;
        pcVar2 = *(code **)((int)local_154 + 0x54);
        pfVar15[-1] = 8.00496e-39;
        (*pcVar2)();
      }
      iVar8 = *(int *)(iVar13 + 4);
      uVar6 = (uint)*(ushort *)(iVar8 + 6 + uVar6 * 8);
      pfVar14 = pfVar15;
    } while (uVar6 != 0xffff);
  }
  pCVar5 = local_e4;
  *(float *)(this + 0x1580) = local_d4;
  if (2 < (int)local_d4) {
    iVar13 = *(int *)this_00;
    pfVar15[2] = 0.0;
    pfVar15[1] = 4.76441e-44;
    *pfVar15 = (float)this_00;
                    /* try { // try from 00573052 to 005734c1 has its CatchHandler @ 00573b22 */
    pcVar2 = *(code **)(iVar13 + 0x7fc);
    pfVar15[-1] = 8.00703e-39;
    (*pcVar2)();
    goto LAB_00572b4a;
  }
  if ((int)local_d4 < 1) {
    pfVar15[4] = 0.0;
    pfVar15[2] = (float)&local_12c;
    pfVar15[3] = 0.0;
    pfVar15[1] = (float)&local_138;
    *pfVar15 = (float)this_00;
    pfVar15[-1] = 8.007706e-39;
    CBasePlayer::EyePositionAndVectors
              ((CBasePlayer *)*pfVar15,(Vector *)pfVar15[1],(Vector *)pfVar15[2],
               (Vector *)pfVar15[3],(Vector *)pfVar15[4]);
    pfVar15[3] = 0.0;
    pfVar15[2] = 0.0;
    fVar19 = local_12c * 150.0;
    pfVar15[1] = (float)this_00;
    fVar18 = local_128 * 150.0;
    *pfVar15 = (float)&local_120;
    local_b4 = local_124 * 150.0;
    local_94 = 0;
    local_98 = 0;
    local_bc = fVar19;
    local_b8 = fVar18;
    local_9c = 0;
    local_8c = 0;
    local_88 = 1;
    local_a4 = 0;
    local_a8 = 0;
    local_ac = 0;
    local_cc = local_138;
    local_87 = fVar18 * fVar18 + local_b4 * local_b4 + fVar19 * fVar19 != 0.0;
    local_c8 = local_134;
    local_c4 = local_130;
    pfVar15[-1] = 8.008065e-39;
    CTraceFilterSimple::CTraceFilterSimple
              ((CTraceFilterSimple *)*pfVar15,(IHandleEntity *)pfVar15[1],(int)pfVar15[2],
               (_func_bool_IHandleEntity_ptr_int *)pfVar15[3]);
    iVar13 = *enginetrace;
    pfVar15[4] = (float)&local_70;
    pfVar15[3] = (float)&local_120;
    pfVar15[2] = 9.422334e-38;
    pfVar15[1] = (float)&local_cc;
    *pfVar15 = (float)enginetrace;
    pcVar2 = *(code **)(iVar13 + 0x14);
    pfVar15[-1] = 8.008124e-39;
    (*pcVar2)();
    if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
      pfVar15[6] = -1.0;
      pfVar15[5] = 1.4013e-45;
      pfVar15[4] = 0.0;
      pfVar15[3] = 0.0;
      pfVar15[2] = 3.57331e-43;
      pfVar15[1] = (float)local_64;
      *pfVar15 = (float)&local_70;
      pfVar15[-1] = 8.008218e-39;
      DebugDrawLine((Vector *)*pfVar15,(Vector *)pfVar15[1],(int)pfVar15[2],(int)pfVar15[3],
                    (int)pfVar15[4],SUB41(pfVar15[5],0),pfVar15[6]);
    }
    iVar13 = local_24;
    if (((local_44 <= 0.0) || (1.0 <= local_44)) || (local_24 == 0)) goto LAB_00572b29;
    if (*(char **)(local_24 + 0x7c) != "func_breakable") {
      pfVar15[1] = (float)"func_breakable";
      *pfVar15 = (float)iVar13;
      pfVar15[-1] = 8.008316e-39;
      cVar3 = CBaseEntity::ClassMatchesComplex((CBaseEntity *)*pfVar15,(char *)pfVar15[1]);
      if ((cVar3 == '\0') && (*(char **)(local_24 + 0x7c) != "func_breakable_surf")) {
        pfVar15[1] = (float)"func_breakable_surf";
        *pfVar15 = (float)local_24;
        pfVar15[-1] = 8.00836e-39;
        cVar3 = CBaseEntity::ClassMatchesComplex((CBaseEntity *)*pfVar15,(char *)pfVar15[1]);
        if (cVar3 == '\0') goto LAB_00572b29;
      }
    }
LAB_00573415:
    iVar13 = *(int *)this_00;
    pfVar15[2] = 0.0;
    pfVar15[1] = 5.04467e-44;
    *pfVar15 = (float)this_00;
    pcVar2 = *(code **)(iVar13 + 0x7fc);
    pfVar15[-1] = 8.008418e-39;
    (*pcVar2)();
  }
  else {
    if ((local_d4 == 1.4013e-45) && (local_e4 != (CTerrorPlayer *)0x0)) {
      pfVar15[3] = 0.0;
      pfVar15[2] = (float)&Infected::typeinfo;
      pfVar15[1] = (float)&CBaseCombatCharacter::typeinfo;
      *pfVar15 = (float)pCVar5;
      pfVar15[-1] = 8.007102e-39;
      piVar10 = (int *)__dynamic_cast();
      if (piVar10 != (int *)0x0) {
        iVar13 = *piVar10;
        *pfVar15 = (float)piVar10;
        pcVar2 = *(code **)(iVar13 + 0x594);
        pfVar15[-1] = 8.007132e-39;
        piVar11 = (int *)(*pcVar2)();
        iVar13 = *piVar11;
        pfVar15[1] = 2.8026e-45;
        *pfVar15 = (float)piVar11;
        pcVar2 = *(code **)(iVar13 + 0x114);
        pfVar15[-1] = 8.007161e-39;
        cVar3 = (*pcVar2)();
        if ((cVar3 == '\0') || (*(int *)(ZombieStompAlways._28_4_ + 0x30) != 0)) {
          iVar13 = *piVar11;
          *pfVar15 = (float)piVar11;
          pcVar2 = *(code **)(iVar13 + 0xfc);
          pfVar15[-1] = 8.007188e-39;
          iVar13 = (*pcVar2)();
          if (iVar13 == 4) {
            if ((*(byte *)((int)piVar10 + 0x14d) & 8) != 0) {
              *pfVar15 = (float)piVar10;
              pfVar15[-1] = 8.010744e-39;
              CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*pfVar15);
            }
            fVar18 = (float)piVar10[0xba];
            if (((byte)this_00[0x14d] & 8) != 0) {
              *pfVar15 = (float)this_00;
                    /* try { // try from 00573aa0 to 00573ab1 has its CatchHandler @ 00573b22 */
              pfVar15[-1] = 8.010726e-39;
              CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*pfVar15);
            }
            if (*(float *)(this_00 + 0x2e8) + 36.0 <= fVar18) goto LAB_005730d1;
          }
          else {
LAB_005730d1:
            if (*(int *)(ZombieStompAlways._28_4_ + 0x30) == 0) goto LAB_00573415;
          }
          CVar16 = (CTerrorPlayer)0x1;
          if (this_00[0x1a90] == (CTerrorPlayer)0x0) {
            CVar16 = this_00[0x1a91];
          }
          *pfVar15 = (float)this_00;
          pfVar15[-1] = 8.007288e-39;
          lVar17 = (longdouble)CTerrorPlayer::GetWalkTopSpeed((CTerrorPlayer *)*pfVar15);
          if (((byte)this_00[0x14d] & 0x10) != 0) {
            *pfVar15 = (float)this_00;
            pfVar15[-1] = 8.007363e-39;
            CBaseEntity::CalcAbsoluteVelocity((CBaseEntity *)*pfVar15);
          }
          fVar18 = *(float *)(this_00 + 0x27c);
          fVar19 = *(float *)(this_00 + 0x278);
          fVar1 = *(float *)(this_00 + 0x274);
          *pfVar15 = (float)this_00;
          pfVar15[-1] = 8.007486e-39;
          iVar13 = CBaseEntity::GetGroundEntity((CBaseEntity *)*pfVar15);
          if (((iVar13 != 0) &&
              (fVar1 * fVar1 + fVar19 * fVar19 + fVar18 * fVar18 <=
               (float)lVar17 * 1.1 * (float)lVar17 * 1.1)) && (CVar16 == (CTerrorPlayer)0x0)) {
            iVar13 = *(int *)this_00;
            pfVar15[2] = 0.0;
            pfVar15[1] = 5.1848e-44;
            *pfVar15 = (float)this_00;
            pcVar2 = *(code **)(iVar13 + 0x7fc);
            pfVar15[-1] = 8.007581e-39;
            (*pcVar2)();
            this[0x1791] = (CTerrorWeapon)0x1;
            iVar13 = *piVar10;
            *pfVar15 = (float)piVar10;
            pcVar2 = *(code **)(iVar13 + 0xc);
            pfVar15[-1] = 8.007607e-39;
            puVar12 = (undefined4 *)(*pcVar2)();
            *(undefined4 *)(this + 0x1794) = *puVar12;
            goto LAB_00572b4a;
          }
          goto LAB_00573415;
        }
      }
    }
LAB_00572b29:
    iVar13 = *(int *)this_00;
    pfVar15[2] = 0.0;
    pfVar15[1] = 4.90454e-44;
    *pfVar15 = (float)this_00;
    pcVar2 = *(code **)(iVar13 + 0x7fc);
    pfVar15[-1] = 8.005217e-39;
    (*pcVar2)();
  }
LAB_00572b4a:
  pfVar15[3] = 5.60519e-45;
  pfVar15[2] = 0.0;
  pfVar15[1] = 1.26117e-44;
  *pfVar15 = (float)this_00;
  pfVar15[-1] = 8.00527e-39;
  CBasePlayer::RumbleEffect
            ((CBasePlayer *)*pfVar15,SUB41(pfVar15[1],0),SUB41(pfVar15[2],0),SUB41(pfVar15[3],0));
  pfVar15[3] = 0.0;
  pfVar15[2] = 0.0;
  pfVar15[1] = (float)"Weapon.Swing";
  *pfVar15 = (float)this_00;
  pfVar15[-1] = 8.005315e-39;
  CBaseEntity::EmitSound((CBaseEntity *)*pfVar15,(char *)pfVar15[1],pfVar15[2],(float *)pfVar15[3]);
  *pfVar15 = (float)this_00;
  pfVar15[-1] = 8.005327e-39;
  CTerrorPlayer::OnMeleeAttack((CTerrorPlayer *)*pfVar15);
  local_110 = &PTR_operator___00c53020;
  *pfVar15 = (float)&local_e0;
  local_d4 = 0.0;
  pfVar15[-1] = 8.005374e-39;
  CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*pfVar15);
  local_d0 = local_e0;
  *pfVar15 = (float)&local_e0;
  pfVar15[-1] = 8.005411e-39;
  CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*pfVar15);
  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)