L L4D2node

CTerrorPlayer::GetSmartLookConcept

0x009c44b0 · 5329 bytes · __thiscall

_ZN13CTerrorPlayer19GetSmartLookConceptEP11CBaseEntityPci

Decompiled

undefined (4 params)

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CTerrorPlayer::GetSmartLookConcept(CBaseEntity*, char*, int) */

char * __thiscall
CTerrorPlayer::GetSmartLookConcept
          (CTerrorPlayer *this,CBaseEntity *param_1,char *param_2,int param_3)

{
  code *pcVar1;
  int *piVar2;
  CTerrorPlayer *pCVar3;
  char cVar4;
  char *pcVar5;
  int iVar6;
  QAngle *pQVar7;
  CTerrorPlayer *pCVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  float *pfVar13;
  char *pcVar14;
  float *pfVar15;
  int *piVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  undefined1 auStackY_2cc [20];
  float afStackY_2b8 [3];
  float local_29c [13];
  char *local_268;
  CTerrorPlayer *local_254;
  CTerrorPlayer *local_250;
  int local_24c;
  int local_248;
  int local_244;
  int local_240;
  int local_23c;
  int local_238;
  int local_234;
  float local_230;
  float local_22c;
  float local_228;
  float local_224;
  float local_220;
  float local_21c;
  float local_218;
  float local_214;
  float local_210;
  undefined1 local_20c [12];
  float local_200;
  float local_1fc;
  float local_1f8;
  float local_1f4;
  float local_1f0;
  float local_1ec;
  float local_1e8;
  float local_1e4;
  float local_1e0;
  float local_1dc;
  float local_1d8;
  float local_1d4;
  int local_1d0;
  int local_1cc;
  int local_1c8;
  float local_1c4;
  float local_1c0;
  float local_1bc;
  float local_1b8;
  float local_1b4;
  float local_1b0;
  float local_1ac;
  float local_1a8;
  float local_1a4;
  undefined1 local_1a0 [12];
  float local_194;
  float local_190;
  float local_18c;
  float local_188;
  float local_184;
  float local_180;
  float local_17c;
  float local_178;
  float local_174;
  float local_170;
  float local_16c;
  float local_168;
  undefined **local_160;
  CTerrorPlayer *local_15c;
  float local_158;
  float local_154;
  float local_150;
  int local_14c;
  float local_148;
  float local_144;
  float local_140;
  float local_13c;
  char local_138;
  CTerrorPlayer *local_134;
  undefined4 local_130;
  undefined4 local_12c;
  undefined4 local_128;
  float local_124;
  undefined4 local_120;
  float local_11c;
  float local_118;
  float local_114;
  float local_10c;
  float local_108;
  float local_104;
  undefined4 local_fc;
  undefined4 local_f8;
  undefined4 local_f4;
  undefined4 local_ec;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined4 local_dc;
  undefined1 local_d8;
  bool local_d7;
  fogparams_t local_c4 [36];
  float local_a0;
  char local_78;
  float local_70;
  float local_6c;
  float local_68;
  undefined1 local_64 [32];
  float local_44;
  int local_24;
  
  pfVar13 = (float *)&stack0xfffffd54;
  pfVar15 = (float *)&stack0xfffffd54;
  if (((param_1 == (CBaseEntity *)0x0) &&
      (param_1 = (CBaseEntity *)(**(code **)(*(int *)this + 0x6e0))(), param_1 == (CBaseEntity *)0x0
      )) || (pcVar5 = (char *)GetResponseRulesNameFromEntity(param_1), pcVar5 == (char *)0x0)) {
    local_268 = "PlayerLook";
  }
  else {
    V_strncat(param_2,",weaponname:",param_3,-1);
    V_strncat(param_2,pcVar5,param_3,-1);
    iVar6 = _V_stricmp("PlayerSpotWeapon","PlayerLook");
    if (iVar6 != 0) {
      return "PlayerSpotWeapon";
    }
    local_268 = "PlayerSpotWeapon";
  }
  fogparams_t::fogparams_t(local_c4);
  (**(code **)(*(int *)this + 0x418))();
  local_140 = 8192.0;
  if (local_78 != '\0') {
    local_140 = *(float *)(SurvivorFogVocalizePercent._28_4_ + 0x2c) * local_a0;
  }
  local_160 = &PTR_operator___00c53020;
  local_130 = 0;
  local_12c = 0;
  local_128 = 0;
  local_15c = this;
  local_124 = 0.0;
  local_120 = 0;
                    /* try { // try from 009c462c to 009c4643 has its CatchHandler @ 009c59f3 */
  pQVar7 = (QAngle *)(**(code **)(*(int *)this + 0x238))();
  AngleVectors(pQVar7,(Vector *)&local_158);
  iVar6 = 1;
  local_14c = 3;
  local_148 = 0.7;
  local_144 = 0.7;
  local_134 = (CTerrorPlayer *)0x0;
  local_13c = 50.0;
  local_138 = '\0';
  if (0 < *(int *)(gpGlobals + 0x14)) {
    do {
      while( true ) {
        *pfVar13 = (float)iVar6;
        pfVar13[-1] = 1.435177e-38;
        pCVar8 = (CTerrorPlayer *)UTIL_PlayerByIndex((int)*pfVar13);
        if ((pCVar8 != (CTerrorPlayer *)0x0) && (*(int *)(pCVar8 + 0x30) != 0)) break;
LAB_009c46d0:
        iVar6 = iVar6 + 1;
        pfVar15 = pfVar13;
        if (*(int *)(gpGlobals + 0x14) < iVar6) goto LAB_009c470c;
      }
      if (*(int *)(pCVar8 + 0x30) - *(int *)(gpGlobals + 0x58) >> 4 != 0) {
        iVar11 = *(int *)pCVar8;
        *pfVar13 = (float)pCVar8;
                    /* try { // try from 009c46a5 to 009c4797 has its CatchHandler @ 009c5a2b */
        pcVar1 = *(code **)(iVar11 + 0x16c);
        pfVar13[-1] = 1.4351688e-38;
        cVar4 = (*pcVar1)();
        if ((cVar4 != '\0') && (*(int *)(pCVar8 + 0x1f6c) != 2)) {
          iVar11 = *(int *)pCVar8;
          *pfVar13 = (float)pCVar8;
          pcVar1 = *(code **)(iVar11 + 0x148);
          pfVar13[-1] = 1.4351722e-38;
          iVar11 = (*pcVar1)();
          if (iVar11 == 0) {
            local_254 = pCVar8;
            local_24c = 0;
            local_248 = 0;
            if (___atan2f_finite == 0) {
              local_234 = 0;
            }
            else {
              pfVar13[0xb] = (float)"TargetScan()";
              pfVar13[10] = (float)"Unaccounted";
              pfVar13[9] = (float)"(%s)%s";
              pfVar13[8] = (float)&TargetScan<CBaseCombatCharacter>::
                                   operator()(CBaseCombatCharacter*)::tm_fmt;
              pfVar13[7] = 6.5861e-44;
              pfVar13[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
              pfVar13[5] = 0.0;
              pfVar13[3] = 0.0;
              pfVar13[4] = 0.0;
              pfVar13[2] = 0.0;
              pfVar13[1] = (float)&local_24c;
              *pfVar13 = (float)___atan2f_finite;
                    /* try { // try from 009c5452 to 009c5454 has its CatchHandler @ 009c5a2b */
              pcVar1 = *(code **)(___atan2f_finite + 0x50);
              pfVar13[-1] = 1.435659e-38;
              (*pcVar1)();
              local_234 = ___atan2f_finite;
            }
            iVar11 = _DAT_0105db00;
            local_23c = local_24c;
            local_238 = local_248;
            if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 009c5492 to 009c5496 has its CatchHandler @ 009c59f7 */
              pfVar13[-1] = 1.4356683e-38;
              iVar10 = ThreadGetCurrentId();
              if (iVar11 == iVar10) {
                if ((char *)*_DAT_0105d15c != "TargetScan()") {
                  pfVar13[4] = 0.0;
                  pfVar13[3] = (float)"Unaccounted";
                  pfVar13[2] = 1.4013e-45;
                  pfVar13[1] = (float)"TargetScan()";
                  *pfVar13 = (float)_DAT_0105d15c;
                    /* try { // try from 009c55b1 to 009c55c2 has its CatchHandler @ 009c59f7 */
                  pfVar13[-1] = 1.4357085e-38;
                  _DAT_0105d15c =
                       (int *)CVProfNode::GetSubNode
                                        ((char *)*pfVar13,(int)pfVar13[1],(char *)pfVar13[2],
                                         (int)pfVar13[3]);
                }
                *pfVar13 = (float)_DAT_0105d15c;
                pfVar13[-1] = 1.4357103e-38;
                CVProfNode::EnterScope();
                DAT_0105d158 = '\0';
              }
            }
            pfVar15 = pfVar13;
            if (local_15c != local_254) {
              iVar11 = *(int *)local_254;
              *pfVar13 = (float)local_254;
                    /* try { // try from 009c54b2 to 009c54d6 has its CatchHandler @ 009c59b7 */
              pcVar1 = *(code **)(iVar11 + 300);
              pfVar13[-1] = 1.4356729e-38;
              cVar4 = (*pcVar1)();
              if (cVar4 != '\0') {
                if (local_14c != -1) {
                  *pfVar13 = (float)local_254;
                  pfVar13[-1] = 1.4356772e-38;
                  iVar11 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar13);
                  if (iVar11 != local_14c) goto LAB_009c54e3;
                }
                iVar11 = *(int *)local_254;
                *pfVar13 = (float)local_254;
                    /* try { // try from 009c55da to 009c59a9 has its CatchHandler @ 009c59b7 */
                pcVar1 = *(code **)(iVar11 + 0x558);
                pfVar13[-1] = 1.4357144e-38;
                cVar4 = (*pcVar1)();
                if (cVar4 == '\0') {
                  iVar11 = *(int *)local_15c;
                  pfVar13[1] = (float)local_15c;
                  *pfVar13 = (float)&local_224;
                  pcVar1 = *(code **)(iVar11 + 0x234);
                  pfVar13[-1] = 1.4357193e-38;
                  (*pcVar1)();
                  local_214 = local_154 * local_13c + local_220;
                  local_210 = local_150 * local_13c + local_21c;
                  local_218 = local_13c * local_158 + local_224;
                  iVar11 = *(int *)local_254;
                  pfVar13[-1] = (float)local_254;
                  pcVar1 = *(code **)(iVar11 + 0x288);
                  pfVar13[-2] = 1.4357344e-38;
                  uVar12 = (*pcVar1)();
                  pfVar13[3] = 0.0;
                  pfVar13[2] = (float)local_20c;
                  *pfVar13 = (float)&local_224;
                  pfVar13[1] = (float)&local_218;
                  pfVar13[-1] = (float)uVar12;
                  pfVar13[-2] = 1.4357408e-38;
                  CalcClosestPointOnLineSegment
                            ((Vector *)pfVar13[-1],(Vector *)*pfVar13,(Vector *)pfVar13[1],
                             (Vector *)pfVar13[2],(float *)pfVar13[3]);
                  pCVar8 = local_254;
                  if (((byte)local_254[0x14d] & 8) != 0) {
                    pfVar13[-1] = (float)local_254;
                    pfVar13[-2] = 1.4357446e-38;
                    CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar13[-1]);
                  }
                  iVar11 = *(int *)(local_254 + 0x194);
                  local_224 = *(float *)(pCVar8 + 0x2e0);
                  local_220 = *(float *)(pCVar8 + 0x2e4);
                  local_21c = *(float *)(pCVar8 + 0x2e8);
                  pfVar13[-1] = (float)(local_254 + 0x194);
                  pcVar1 = *(code **)(iVar11 + 8);
                  pfVar13[-2] = 1.4357581e-38;
                  local_218 = local_224;
                  local_214 = local_220;
                  local_210 = local_21c;
                  iVar11 = (*pcVar1)();
                  fVar19 = *(float *)(iVar11 + 8);
                  pfVar13[2] = (float)&local_230;
                  *pfVar13 = (float)&local_224;
                  pfVar13[3] = 0.0;
                  pfVar13[1] = (float)&local_218;
                  pfVar13[-1] = (float)local_20c;
                  local_210 = local_210 + fVar19;
                  pfVar13[-2] = 1.4357675e-38;
                  CalcClosestPointOnLineSegment
                            ((Vector *)pfVar13[-1],(Vector *)*pfVar13,(Vector *)pfVar13[1],
                             (Vector *)pfVar13[2],(float *)pfVar13[3]);
                  if (local_138 != '\0') {
                    pfVar13[5] = -1.0;
                    pfVar13[4] = 1.4013e-45;
                    pfVar13[3] = 3.57331e-43;
                    pfVar13[2] = 3.57331e-43;
                    pfVar13[1] = 3.57331e-43;
                    *pfVar13 = 1.0;
                    pfVar13[-1] = (float)&local_230;
                    pfVar13[-2] = 1.4357766e-38;
                    NDebugOverlay::Cross3D
                              ((Vector *)pfVar13[-1],*pfVar13,(int)pfVar13[1],(int)pfVar13[2],
                               (int)pfVar13[3],*(bool *)(pfVar13 + 4),pfVar13[5]);
                    pfVar13[5] = -1.0;
                    pfVar13[4] = 1.4013e-45;
                    pfVar13[3] = 0.0;
                    pfVar13[2] = 0.0;
                    pfVar13[1] = 3.57331e-43;
                    *pfVar13 = (float)&local_224;
                    pfVar13[-1] = (float)&local_218;
                    pfVar13[-2] = 1.4357847e-38;
                    NDebugOverlay::Line((Vector *)pfVar13[-1],(Vector *)*pfVar13,(int)pfVar13[1],
                                        (int)pfVar13[2],(int)pfVar13[3],*(bool *)(pfVar13 + 4),
                                        pfVar13[5]);
                  }
                  iVar11 = *(int *)local_15c;
                  *pfVar13 = (float)local_15c;
                  pfVar13[-1] = (float)&local_1dc;
                  pcVar1 = *(code **)(iVar11 + 0x234);
                  pfVar13[-2] = 1.4357885e-38;
                  (*pcVar1)();
                  pfVar13[-2] = (float)&local_200;
                  local_200 = local_230 - local_1dc;
                  local_1fc = local_22c - local_1d8;
                  local_1f8 = local_228 - local_1d4;
                  pfVar13[-3] = 1.435801e-38;
                  VectorNormalize((Vector *)pfVar13[-2]);
                  pfVar13[-1] = (float)&local_230;
                  *pfVar13 = (float)&local_1f4;
                  pfVar13[-2] = (float)(local_15c + 0x194);
                  pfVar13[-3] = 1.4358059e-38;
                  CCollisionProperty::CalcNearestPoint
                            ((CCollisionProperty *)pfVar13[-2],(Vector *)pfVar13[-1],
                             (Vector *)*pfVar13);
                  pfVar13[-1] = (float)&local_1f4;
                  *pfVar13 = (float)&local_1e8;
                  pfVar13[-2] = (float)(local_254 + 0x194);
                  pfVar13[-3] = 1.4358105e-38;
                  CCollisionProperty::CalcNearestPoint
                            ((CCollisionProperty *)pfVar13[-2],(Vector *)pfVar13[-1],
                             (Vector *)*pfVar13);
                  pfVar15 = pfVar13 + -2;
                  if ((SQRT((local_1f0 - local_1e4) * (local_1f0 - local_1e4) +
                            (local_1f4 - local_1e8) * (local_1f4 - local_1e8) +
                            (local_1ec - local_1e0) * (local_1ec - local_1e0)) <= local_140) &&
                     (fVar19 = local_1f8 * local_150 + local_200 * local_158 + local_1fc * local_154
                     , pfVar15 = pfVar13 + -2, local_148 < fVar19)) {
                    pfVar13[-1] = (float)local_254;
                    pfVar13[-2] = (float)&local_160;
                    pfVar13[-3] = 1.4358392e-38;
                    cVar4 = TargetScan<CBaseCombatCharacter>::IsTargetVisible
                                      ((TargetScan<CBaseCombatCharacter> *)pfVar13[-2],
                                       (CBaseCombatCharacter *)pfVar13[-1]);
                    pfVar15 = pfVar13 + -2;
                    if (cVar4 != '\0') {
                      if (local_144 <= fVar19) {
                        local_144 = fVar19;
                        local_134 = local_254;
                      }
                      *pfVar13 = (float)&local_254;
                      pfVar13[-1] = local_124;
                      pfVar13[-2] = (float)&local_130;
                      pfVar13[-3] = 1.4358503e-38;
                      CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
                      InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
                                    *)pfVar13[-2],(int)pfVar13[-1],(CBaseCombatCharacter **)*pfVar13
                                  );
                      pfVar15 = pfVar13 + -2;
                    }
                  }
                }
              }
            }
LAB_009c54e3:
            iVar11 = _DAT_0105db00;
            if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
              pfVar15[-1] = 1.4356831e-38;
              iVar10 = ThreadGetCurrentId();
              if (iVar11 == iVar10) {
                *pfVar15 = (float)_DAT_0105d15c;
                pfVar15[-1] = 1.4356967e-38;
                cVar4 = CVProfNode::ExitScope();
                if (cVar4 != '\0') {
                  _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
                }
                DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
              }
            }
            pfVar13 = pfVar15;
            if (local_234 != 0) {
              pfVar15[5] = 0.0;
              pfVar15[4] = 0.0;
              pfVar15[3] = 0.0;
              *pfVar15 = (float)local_234;
              pfVar15[1] = (float)local_23c;
              pfVar15[2] = (float)local_238;
              pcVar1 = *(code **)(local_234 + 0x54);
              pfVar15[-1] = 1.4356926e-38;
              (*pcVar1)();
            }
          }
        }
        goto LAB_009c46d0;
      }
      iVar6 = iVar6 + 1;
      pfVar15 = pfVar13;
    } while (iVar6 <= *(int *)(gpGlobals + 0x14));
  }
LAB_009c470c:
  *(undefined4 *)((int)pfVar15 + -4) = 0x9c4711;
  iVar6 = TheNextBots();
  uVar9 = (uint)*(ushort *)(iVar6 + 0x10);
  if (uVar9 != 0xffff) {
    iVar11 = *(int *)(iVar6 + 4);
    pfVar13 = pfVar15;
    do {
      piVar16 = *(int **)(iVar11 + uVar9 * 8);
      iVar11 = *piVar16;
      *pfVar13 = (float)piVar16;
                    /* try { // try from 009c48ba to 009c48bf has its CatchHandler @ 009c5a2b */
      pcVar1 = *(code **)(iVar11 + 0xb4);
      pfVar13[-1] = 1.4352435e-38;
      local_250 = (CTerrorPlayer *)(*pcVar1)();
      local_244 = 0;
      local_240 = 0;
      if (___atan2f_finite == 0) {
        local_1c8 = 0;
      }
      else {
        pfVar13[0xb] = (float)"TargetScan()";
        pfVar13[10] = (float)"Unaccounted";
        pfVar13[9] = (float)"(%s)%s";
        pfVar13[8] = (float)&TargetScan<CBaseCombatCharacter>::operator()(CBaseCombatCharacter*)::
                             tm_fmt;
        pfVar13[7] = 6.5861e-44;
        pfVar13[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
        pfVar13[5] = 0.0;
        pfVar13[3] = 0.0;
        pfVar13[4] = 0.0;
        pfVar13[2] = 0.0;
        pfVar13[1] = (float)&local_244;
        *pfVar13 = (float)___atan2f_finite;
        pcVar1 = *(code **)(___atan2f_finite + 0x50);
        pfVar13[-1] = 1.435202e-38;
        (*pcVar1)();
        local_1c8 = ___atan2f_finite;
      }
      iVar11 = _DAT_0105db00;
      local_1d0 = local_244;
      local_1cc = local_240;
      if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 009c47d5 to 009c47d9 has its CatchHandler @ 009c5a09 */
        pfVar13[-1] = 1.4352113e-38;
        iVar10 = ThreadGetCurrentId();
        if (iVar11 == iVar10) {
          if ((char *)*_DAT_0105d15c != "TargetScan()") {
            pfVar13[4] = 0.0;
            pfVar13[3] = (float)"Unaccounted";
            pfVar13[2] = 1.4013e-45;
            pfVar13[1] = (float)"TargetScan()";
            *pfVar13 = (float)_DAT_0105d15c;
                    /* try { // try from 009c4928 to 009c4939 has its CatchHandler @ 009c5a09 */
            pfVar13[-1] = 1.4352588e-38;
            _DAT_0105d15c =
                 (int *)CVProfNode::GetSubNode
                                  ((char *)*pfVar13,(int)pfVar13[1],(char *)pfVar13[2],
                                   (int)pfVar13[3]);
          }
          *pfVar13 = (float)_DAT_0105d15c;
          pfVar13[-1] = 1.4352606e-38;
          CVProfNode::EnterScope();
          DAT_0105d158 = '\0';
        }
      }
      pfVar15 = pfVar13;
      if (local_15c != local_250) {
        iVar11 = *(int *)local_250;
        *pfVar13 = (float)local_250;
                    /* try { // try from 009c47f5 to 009c4819 has its CatchHandler @ 009c5a1b */
        pcVar1 = *(code **)(iVar11 + 300);
        pfVar13[-1] = 1.4352159e-38;
        cVar4 = (*pcVar1)();
        if (cVar4 != '\0') {
          if (local_14c != -1) {
            *pfVar13 = (float)local_250;
            pfVar13[-1] = 1.4352203e-38;
            iVar11 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar13);
            if (iVar11 != local_14c) goto LAB_009c4830;
          }
          iVar11 = *(int *)local_250;
          *pfVar13 = (float)local_250;
                    /* try { // try from 009c498b to 009c4d56 has its CatchHandler @ 009c5a1b */
          pcVar1 = *(code **)(iVar11 + 0x558);
          pfVar13[-1] = 1.4352728e-38;
          cVar4 = (*pcVar1)();
          if (cVar4 == '\0') {
            iVar11 = *(int *)local_15c;
            pfVar13[1] = (float)local_15c;
            *pfVar13 = (float)&local_1b8;
            pcVar1 = *(code **)(iVar11 + 0x234);
            pfVar13[-1] = 1.4352777e-38;
            (*pcVar1)();
            local_1a8 = local_154 * local_13c + local_1b4;
            local_1a4 = local_150 * local_13c + local_1b0;
            local_1ac = local_13c * local_158 + local_1b8;
            iVar11 = *(int *)local_250;
            pfVar13[-1] = (float)local_250;
            pcVar1 = *(code **)(iVar11 + 0x288);
            pfVar13[-2] = 1.4352928e-38;
            uVar12 = (*pcVar1)();
            pfVar13[3] = 0.0;
            pfVar13[2] = (float)local_1a0;
            pfVar13[1] = (float)&local_1ac;
            *pfVar13 = (float)&local_1b8;
            pfVar13[-1] = (float)uVar12;
            pfVar13[-2] = 1.4352993e-38;
            CalcClosestPointOnLineSegment
                      ((Vector *)pfVar13[-1],(Vector *)*pfVar13,(Vector *)pfVar13[1],
                       (Vector *)pfVar13[2],(float *)pfVar13[3]);
            pCVar8 = local_250;
            if (((byte)local_250[0x14d] & 8) != 0) {
              pfVar13[-1] = (float)local_250;
              pfVar13[-2] = 1.4353031e-38;
              CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar13[-1]);
            }
            iVar11 = *(int *)(local_250 + 0x194);
            local_1b8 = *(float *)(pCVar8 + 0x2e0);
            local_1b4 = *(float *)(pCVar8 + 0x2e4);
            local_1b0 = *(float *)(pCVar8 + 0x2e8);
            pfVar13[-1] = (float)(local_250 + 0x194);
            pcVar1 = *(code **)(iVar11 + 8);
            pfVar13[-2] = 1.4353165e-38;
            local_1ac = local_1b8;
            local_1a8 = local_1b4;
            local_1a4 = local_1b0;
            iVar11 = (*pcVar1)();
            fVar19 = *(float *)(iVar11 + 8);
            pfVar13[2] = (float)&local_1c4;
            *pfVar13 = (float)&local_1b8;
            pfVar13[3] = 0.0;
            pfVar13[1] = (float)&local_1ac;
            pfVar13[-1] = (float)local_1a0;
            local_1a4 = local_1a4 + fVar19;
            pfVar13[-2] = 1.4353259e-38;
            CalcClosestPointOnLineSegment
                      ((Vector *)pfVar13[-1],(Vector *)*pfVar13,(Vector *)pfVar13[1],
                       (Vector *)pfVar13[2],(float *)pfVar13[3]);
            if (local_138 != '\0') {
              pfVar13[5] = -1.0;
              pfVar13[4] = 1.4013e-45;
              pfVar13[3] = 3.57331e-43;
              pfVar13[2] = 3.57331e-43;
              pfVar13[1] = 3.57331e-43;
              *pfVar13 = 1.0;
              pfVar13[-1] = (float)&local_1c4;
              pfVar13[-2] = 1.435335e-38;
              NDebugOverlay::Cross3D
                        ((Vector *)pfVar13[-1],*pfVar13,(int)pfVar13[1],(int)pfVar13[2],
                         (int)pfVar13[3],*(bool *)(pfVar13 + 4),pfVar13[5]);
              pfVar13[5] = -1.0;
              pfVar13[4] = 1.4013e-45;
              pfVar13[3] = 0.0;
              pfVar13[2] = 0.0;
              pfVar13[1] = 3.57331e-43;
              *pfVar13 = (float)&local_1b8;
              pfVar13[-1] = (float)&local_1ac;
              pfVar13[-2] = 1.4353432e-38;
              NDebugOverlay::Line((Vector *)pfVar13[-1],(Vector *)*pfVar13,(int)pfVar13[1],
                                  (int)pfVar13[2],(int)pfVar13[3],*(bool *)(pfVar13 + 4),pfVar13[5])
              ;
            }
            iVar11 = *(int *)local_15c;
            *pfVar13 = (float)local_15c;
            pfVar13[-1] = (float)&local_70;
            pcVar1 = *(code **)(iVar11 + 0x234);
            pfVar13[-2] = 1.4353465e-38;
            (*pcVar1)();
            pfVar13[-2] = (float)&local_194;
            local_194 = local_1c4 - local_70;
            local_190 = local_1c0 - local_6c;
            local_18c = local_1bc - local_68;
            pfVar13[-3] = 1.4353577e-38;
            VectorNormalize((Vector *)pfVar13[-2]);
            pfVar13[-1] = (float)&local_1c4;
            *pfVar13 = (float)&local_188;
            pfVar13[-2] = (float)(local_15c + 0x194);
            pfVar13[-3] = 1.4353626e-38;
            CCollisionProperty::CalcNearestPoint
                      ((CCollisionProperty *)pfVar13[-2],(Vector *)pfVar13[-1],(Vector *)*pfVar13);
            pfVar13[-1] = (float)&local_188;
            *pfVar13 = (float)&local_17c;
            pfVar13[-2] = (float)(local_250 + 0x194);
            pfVar13[-3] = 1.4353673e-38;
            CCollisionProperty::CalcNearestPoint
                      ((CCollisionProperty *)pfVar13[-2],(Vector *)pfVar13[-1],(Vector *)*pfVar13);
            pfVar15 = pfVar13 + -2;
            if ((SQRT((local_180 - local_174) * (local_180 - local_174) +
                      (local_188 - local_17c) * (local_188 - local_17c) +
                      (local_184 - local_178) * (local_184 - local_178)) <= local_140) &&
               (fVar19 = local_18c * local_150 + local_194 * local_158 + local_190 * local_154,
               pfVar15 = pfVar13 + -2, local_148 < fVar19)) {
              *pfVar13 = 1.4013e-45;
              pfVar13[-1] = (float)local_250;
              pfVar13[-2] = (float)local_15c;
              pfVar13[-3] = 1.4353971e-38;
              cVar4 = CBaseCombatCharacter::IsAbleToSee();
              pfVar15 = pfVar13 + -2;
              if (cVar4 != '\0') {
                if (local_144 <= fVar19) {
                  local_144 = fVar19;
                  local_134 = local_250;
                }
                *pfVar13 = (float)&local_250;
                pfVar13[-1] = local_124;
                pfVar13[-2] = (float)&local_130;
                pfVar13[-3] = 1.4354082e-38;
                CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
                InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
                              *)pfVar13[-2],(int)pfVar13[-1],(CBaseCombatCharacter **)*pfVar13);
                pfVar15 = pfVar13 + -2;
              }
            }
          }
        }
      }
LAB_009c4830:
      iVar11 = _DAT_0105db00;
      if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
        pfVar15[-1] = 1.4352275e-38;
        iVar10 = ThreadGetCurrentId();
        if (iVar11 == iVar10) {
          *pfVar15 = (float)_DAT_0105d15c;
          pfVar15[-1] = 1.4352655e-38;
          cVar4 = CVProfNode::ExitScope();
          if (cVar4 != '\0') {
            _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
          }
          DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
        }
      }
      if (local_1c8 != 0) {
        pfVar15[5] = 0.0;
        pfVar15[4] = 0.0;
        pfVar15[3] = 0.0;
        *pfVar15 = (float)local_1c8;
        pfVar15[1] = (float)local_1d0;
        pfVar15[2] = (float)local_1cc;
        pcVar1 = *(code **)(local_1c8 + 0x54);
        pfVar15[-1] = 1.4352371e-38;
        (*pcVar1)();
      }
      iVar11 = *(int *)(iVar6 + 4);
      uVar9 = (uint)*(ushort *)(iVar11 + 6 + uVar9 * 8);
      pfVar13 = pfVar15;
    } while (uVar9 != 0xffff);
  }
  pCVar8 = local_134;
  pcVar5 = local_268;
  if (local_134 == (CTerrorPlayer *)0x0) {
LAB_009c52e9:
    local_268 = pcVar5;
    if (local_268 != "PlayerLook") goto LAB_009c4e0a;
  }
  else {
    iVar6 = *(int *)local_134;
    *pfVar15 = (float)local_134;
                    /* try { // try from 009c4d93 to 009c4ef2 has its CatchHandler @ 009c5a2b */
    pcVar1 = *(code **)(iVar6 + 0x16c);
    pfVar15[-1] = 1.4354174e-38;
    cVar4 = (*pcVar1)();
    pCVar3 = local_134;
    if (cVar4 == '\0') {
      if (local_134 == (CTerrorPlayer *)0x0) {
        piVar16 = (int *)0x0;
      }
      else {
        pfVar15[3] = 0.0;
        pfVar15[2] = (float)&Infected::typeinfo;
        pfVar15[1] = (float)&CBaseCombatCharacter::typeinfo;
        *pfVar15 = (float)pCVar3;
        pfVar15[-1] = 1.4355465e-38;
        piVar16 = (int *)__dynamic_cast();
        if (piVar16 != (int *)0x0) {
          iVar6 = *piVar16;
          *pfVar15 = (float)piVar16;
                    /* try { // try from 009c513d to 009c5255 has its CatchHandler @ 009c5a2b */
          pcVar1 = *(code **)(iVar6 + 0x544);
          pfVar15[-1] = 1.4355489e-38;
          iVar6 = (*pcVar1)();
          goto LAB_009c4db0;
        }
      }
LAB_009c5150:
      *pfVar15 = (float)piVar16;
      pfVar15[-1] = 1.4355518e-38;
      local_70 = (float)CBaseEntity::GetGender((CBaseEntity *)*pfVar15);
      *pfVar15 = (float)&local_70;
      pfVar15[-1] = 1.4355538e-38;
      pcVar14 = (char *)UncommonGenderToString((gender_t *)*pfVar15);
      if (*pcVar14 == '\0') {
        iVar6 = *(int *)this;
        *pfVar15 = (float)this;
        pcVar1 = *(code **)(iVar6 + 0x238);
        pfVar15[-1] = 1.4355676e-38;
        pfVar13 = (float *)(*pcVar1)();
        local_11c = *pfVar13;
        local_118 = pfVar13[1];
        local_114 = pfVar13[2];
        pfVar15[1] = (float)&local_170;
        *pfVar15 = (float)&local_11c;
        pfVar15[-1] = 1.4355746e-38;
        AngleVectors((QAngle *)*pfVar15,(Vector *)pfVar15[1]);
        if (((byte)pCVar8[0x14d] & 0x10) != 0) {
          *pfVar15 = (float)pCVar8;
          pfVar15[-1] = 1.435577e-38;
          CBaseEntity::CalcAbsoluteVelocity((CBaseEntity *)*pfVar15);
        }
        fVar19 = *(float *)(pCVar8 + 0x274);
        local_70 = fVar19;
        local_6c = *(float *)(pCVar8 + 0x278);
        fVar17 = *(float *)(pCVar8 + 0x27c);
        *pfVar15 = (float)&local_70;
        fVar18 = local_6c;
        local_68 = fVar17;
        pfVar15[-1] = 1.4355874e-38;
        VectorNormalize((Vector *)*pfVar15);
        if ((local_16c * local_6c + local_170 * local_70 + local_168 * local_68 < -0.3) &&
           (pcVar5 = "PlayerIncoming", fVar19 * fVar19 + fVar17 * fVar17 + fVar18 * fVar18 < 20000.0
           )) {
          pcVar5 = local_268;
        }
        goto LAB_009c52e9;
      }
      pfVar15[3] = -NAN;
      pfVar15[1] = (float)",SpecialType:";
      pfVar15[2] = (float)param_3;
      *pfVar15 = (float)param_2;
      pfVar15[-1] = 1.4355595e-38;
      V_strncat((char *)*pfVar15,(char *)pfVar15[1],(uint)pfVar15[2],(int)pfVar15[3]);
      pfVar15[3] = -NAN;
      pfVar15[1] = (float)pcVar14;
      pfVar15[2] = (float)param_3;
      *pfVar15 = (float)param_2;
      pfVar15[-1] = 1.4355637e-38;
      V_strncat((char *)*pfVar15,(char *)pfVar15[1],(uint)pfVar15[2],(int)pfVar15[3]);
    }
    else {
      iVar6 = *(int *)pCVar8;
      *pfVar15 = (float)pCVar8;
      pcVar1 = *(code **)(iVar6 + 0x544);
      pfVar15[-1] = 1.4354201e-38;
      iVar6 = (*pcVar1)();
      piVar16 = (int *)0x0;
LAB_009c4db0:
      if (iVar6 == 0) goto LAB_009c5150;
      pfVar15[3] = -NAN;
      pfVar15[1] = (float)",SpecialType:";
      pfVar15[2] = (float)param_3;
      *pfVar15 = (float)param_2;
      pfVar15[-1] = 1.4354265e-38;
      V_strncat((char *)*pfVar15,(char *)pfVar15[1],(uint)pfVar15[2],(int)pfVar15[3]);
      *pfVar15 = (float)iVar6;
      pfVar15[-1] = 1.4354276e-38;
      iVar6 = ZombieClassName();
      pfVar15[1] = (float)iVar6;
      pfVar15[3] = -NAN;
      pfVar15[2] = (float)param_3;
      *pfVar15 = (float)param_2;
      pfVar15[-1] = 1.4354319e-38;
      V_strncat((char *)*pfVar15,(char *)pfVar15[1],(uint)pfVar15[2],(int)pfVar15[3]);
    }
    local_268 = "PlayerWarnSpecial";
LAB_009c4e0a:
    pfVar15[1] = (float)"PlayerLook";
    *pfVar15 = (float)local_268;
    pfVar15[-1] = 1.4354363e-38;
    iVar6 = _V_stricmp((char *)*pfVar15,(char *)pfVar15[1]);
    piVar16 = (int *)pfVar15;
    if (iVar6 != 0) goto LAB_009c50ba;
  }
  iVar6 = *(int *)this;
  *pfVar15 = (float)this;
  pcVar1 = *(code **)(iVar6 + 0x238);
  pfVar15[-1] = 1.4354398e-38;
  pfVar13 = (float *)(*pcVar1)();
  local_188 = *pfVar13;
  local_184 = pfVar13[1];
  local_180 = pfVar13[2];
  pfVar15[1] = (float)&local_194;
  *pfVar15 = (float)&local_188;
  pfVar15[-1] = 1.4354468e-38;
  AngleVectors((QAngle *)*pfVar15,(Vector *)pfVar15[1]);
  iVar6 = *(int *)this;
  *pfVar15 = (float)&local_17c;
  pfVar15[1] = (float)this;
  pcVar1 = *(code **)(iVar6 + 0x234);
  pfVar15[-1] = 1.4354506e-38;
  (*pcVar1)();
  fVar19 = local_190;
  piVar2 = mdlcache;
  piVar16 = (int *)(pfVar15 + -1);
  fVar18 = local_194 * 1024.0;
  iVar6 = *mdlcache;
  pfVar15[-1] = (float)mdlcache;
  fVar19 = fVar19 * 1024.0;
  fVar17 = local_18c * 1024.0;
  pcVar1 = *(code **)(iVar6 + 0x68);
  pfVar15[-2] = 1.4354659e-38;
  (*pcVar1)();
  local_118 = local_178;
  pfVar15[2] = 0.0;
  pfVar15[-1] = (float)&local_170;
  pfVar15[1] = 0.0;
  local_10c = fVar18;
  local_108 = fVar19;
  local_104 = fVar17;
  *pfVar15 = (float)this;
  local_dc = 0;
  local_d8 = 1;
  local_11c = local_17c;
  local_114 = local_174;
  local_e4 = 0;
  local_e8 = 0;
  local_ec = 0;
  local_f4 = 0;
  local_f8 = 0;
  local_fc = 0;
  local_d7 = fVar19 * fVar19 + fVar18 * fVar18 + fVar17 * fVar17 != 0.0;
                    /* try { // try from 009c4fca to 009c508b has its CatchHandler @ 009c59fb */
  pfVar15[-2] = 1.4354967e-38;
  CTraceFilterSimple::CTraceFilterSimple
            ((CTraceFilterSimple *)pfVar15[-1],(IHandleEntity *)*pfVar15,(int)pfVar15[1],
             (_func_bool_IHandleEntity_ptr_int *)pfVar15[2]);
  iVar6 = *enginetrace;
  pfVar15[3] = (float)&local_70;
  pfVar15[2] = (float)&local_170;
  pfVar15[1] = 8208.003;
  *pfVar15 = (float)&local_11c;
  pfVar15[-1] = (float)enginetrace;
  pcVar1 = *(code **)(iVar6 + 0x14);
  pfVar15[-2] = 1.4355026e-38;
  (*pcVar1)();
  if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
    pfVar15[5] = -1.0;
    pfVar15[4] = 1.4013e-45;
    pfVar15[3] = 0.0;
    pfVar15[2] = 0.0;
    pfVar15[1] = 3.57331e-43;
    *pfVar15 = (float)local_64;
    pfVar15[-1] = (float)&local_70;
    pfVar15[-2] = 1.435512e-38;
    DebugDrawLine((Vector *)pfVar15[-1],(Vector *)*pfVar15,(int)pfVar15[1],(int)pfVar15[2],
                  (int)pfVar15[3],SUB41(pfVar15[4],0),pfVar15[5]);
  }
  iVar6 = local_24;
  if (local_24 == 0) goto LAB_009c5094;
  if (*(char **)(local_24 + 0x7c) == "func_door*") {
LAB_009c5306:
    iVar6 = local_24;
    pfVar15[2] = 0.0;
    pfVar15[1] = (float)&CBaseDoor::typeinfo;
    *pfVar15 = (float)&CBaseEntity::typeinfo;
    pfVar15[-1] = (float)iVar6;
    pfVar15[-2] = 1.4356165e-38;
    iVar11 = __dynamic_cast();
    if ((iVar11 != 0) && (*(char *)(iVar11 + 0x4fc) == '\0')) goto LAB_009c533b;
LAB_009c506f:
    if (*(char **)(iVar6 + 0x7c) != "prop_door*") {
      *pfVar15 = (float)"prop_door*";
      pfVar15[-1] = (float)iVar6;
      pfVar15[-2] = 1.4355232e-38;
      cVar4 = CBaseEntity::ClassMatchesComplex((CBaseEntity *)pfVar15[-1],(char *)*pfVar15);
      if ((cVar4 == '\0') || (iVar6 = local_24, local_24 == 0)) goto LAB_009c5094;
    }
    pfVar15[2] = 0.0;
    pfVar15[1] = (float)&CBasePropDoor::typeinfo;
    *pfVar15 = (float)&CBaseEntity::typeinfo;
    pfVar15[-1] = (float)iVar6;
    pfVar15[-2] = 1.4356364e-38;
    iVar6 = __dynamic_cast();
    if ((iVar6 != 0) && (*(char *)(iVar6 + 0x1624) == '\0')) {
LAB_009c533b:
      iVar6 = *piVar2;
      pfVar15[-1] = (float)piVar2;
      pcVar1 = *(code **)(iVar6 + 0x6c);
      pfVar15[-2] = 1.4356206e-38;
      (*pcVar1)();
      local_160 = &PTR_operator___00c53020;
      pfVar15[-1] = (float)&local_130;
      local_124 = 0.0;
      pfVar15[-2] = 1.4356254e-38;
      CUtlMemory<CBaseCombatCharacter*,int>::Purge
                ((CUtlMemory<CBaseCombatCharacter*,int> *)pfVar15[-1]);
      local_120 = local_130;
      pfVar15[-1] = (float)&local_130;
      pfVar15[-2] = 1.435629e-38;
      CUtlMemory<CBaseCombatCharacter*,int>::Purge
                ((CUtlMemory<CBaseCombatCharacter*,int> *)pfVar15[-1]);
      return "PlayerLockTheDoor";
    }
  }
  else {
    *pfVar15 = (float)"func_door*";
    pfVar15[-1] = (float)iVar6;
    pfVar15[-2] = 1.435517e-38;
    cVar4 = CBaseEntity::ClassMatchesComplex((CBaseEntity *)pfVar15[-1],(char *)*pfVar15);
    if (cVar4 == '\0') {
      iVar6 = local_24;
      if (local_24 != 0) goto LAB_009c506f;
    }
    else if (local_24 != 0) goto LAB_009c5306;
  }
LAB_009c5094:
  pcVar5 = "PlayerLookHere";
  if (0.2 <= local_44) {
    pcVar5 = local_268;
  }
  iVar6 = *piVar2;
  pfVar15[-1] = (float)piVar2;
  pcVar1 = *(code **)(iVar6 + 0x6c);
  pfVar15[-2] = 1.4355297e-38;
  (*pcVar1)();
  local_268 = pcVar5;
LAB_009c50ba:
  local_160 = &PTR_operator___00c53020;
  *piVar16 = (int)&local_130;
  local_124 = 0.0;
  piVar16[-1] = 0x9c50dc;
  CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*piVar16);
  local_120 = local_130;
  *piVar16 = (int)&local_130;
  piVar16[-1] = 0x9c50f6;
  CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*piVar16);
  return local_268;
}

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)