L L4D2node

CTerrorPlayer::CheckEnemySightings

0x00a00ca0 · 9715 bytes · __thiscall

_ZN13CTerrorPlayer19CheckEnemySightingsEv

Decompiled

undefined (1 param)

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

void __thiscall CTerrorPlayer::CheckEnemySightings(CTerrorPlayer *this)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  undefined **ppuVar6;
  code *pcVar7;
  uint *puVar8;
  char cVar9;
  bool bVar10;
  int iVar11;
  uint uVar12;
  int *piVar13;
  int iVar14;
  int *piVar15;
  undefined4 uVar16;
  CTerrorPlayer *pCVar17;
  int iVar18;
  int iVar19;
  int *piVar20;
  float *pfVar21;
  float *pfVar22;
  undefined4 *puVar23;
  CTerrorPlayer CVar24;
  float *pfVar25;
  CTerrorPlayer **ppCVar26;
  CTerrorPlayer **ppCVar27;
  longdouble lVar28;
  float fVar29;
  int local_1f8 [2];
  CTerrorPlayer *local_1f0;
  int *local_1b4;
  int local_1b0;
  int *local_198;
  CTerrorPlayer *local_194;
  CTerrorPlayer *local_190;
  int local_18c;
  int local_188;
  int local_184;
  int local_180;
  int local_17c;
  int local_178;
  CTerrorPlayer *local_170;
  int local_16c;
  int local_168;
  int local_164;
  int 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;
  int local_114;
  int local_110;
  int local_10c;
  int local_108;
  int local_104;
  int local_100;
  float local_fc;
  float local_f8;
  float local_f4;
  float local_f0;
  float local_ec;
  float local_e8;
  float local_e4;
  float local_e0;
  float local_dc;
  float local_d8;
  float local_d4;
  float local_d0;
  float local_cc;
  float local_c8;
  float local_c4;
  undefined **local_c0;
  CTerrorPlayer *local_bc;
  float local_b8;
  undefined **local_b4;
  CTerrorPlayer *local_b0;
  float local_ac;
  float local_a8;
  float local_a4;
  int local_a0;
  float local_9c;
  float local_98;
  float local_94;
  float local_90;
  char local_8c;
  CTerrorPlayer *local_88;
  int local_84;
  undefined4 local_80;
  undefined4 local_7c;
  float local_78;
  int local_74;
  CTerrorPlayer *local_70;
  CTerrorPlayer *local_6c;
  float local_68;
  int local_64;
  CTerrorPlayer *local_60;
  int local_5c;
  undefined4 local_58;
  undefined4 local_54;
  int local_50;
  int local_4c;
  CTerrorPlayer *local_48;
  int *local_44;
  float local_40;
  undefined4 local_3c;
  float local_38;
  float local_34;
  float local_30;
  int local_2c;
  int local_28;
  int local_24;
  float local_20;
  
  local_18c = 0;
  local_188 = 0;
  if (_towlower == 0) {
    local_160 = 0;
  }
  else {
    local_1f0 = (CTerrorPlayer *)0xa00d30;
    (**(code **)(_towlower + 0x50))();
    local_160 = _towlower;
  }
  iVar11 = _DAT_0105db00;
  local_168 = local_18c;
  local_164 = local_188;
  if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 00a01476 to 00a014d6 has its CatchHandler @ 00a033e9 */
    local_1f0 = (CTerrorPlayer *)0xa0147b;
    iVar14 = ThreadGetCurrentId();
    if (iVar11 == iVar14) {
      if ((char *)*_DAT_0105d15c != "CTerrorPlayer::CheckEnemySightings") {
        local_1f0 = (CTerrorPlayer *)0xa014b8;
        _DAT_0105d15c =
             (int *)CVProfNode::GetSubNode((char *)_DAT_0105d15c,0xd1c77c,(char *)0x0,0xd0e8d1);
      }
      puVar8 = (uint *)(_DAT_0105d1e8 + 4 + _DAT_0105d15c[0x1c] * 8);
      *puVar8 = *puVar8 | 4;
      local_1f0 = (CTerrorPlayer *)0xa014d7;
      CVProfNode::EnterScope();
      DAT_0105d158 = '\0';
    }
  }
                    /* try { // try from 00a00d78 to 00a0112a has its CatchHandler @ 00a033e2 */
  local_1f0 = (CTerrorPlayer *)0xa00d7d;
  lVar28 = (longdouble)CountdownTimer::Now();
  pfVar25 = (float *)&stack0xfffffe14;
  if (*(float *)(this + 0x2eb8) <= (float)lVar28) {
                    /* try { // try from 00a01cdb to 00a01dc0 has its CatchHandler @ 00a033e2 */
    local_1f0 = (CTerrorPlayer *)0xa01ce0;
    iVar11 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
    local_1f0 = (CTerrorPlayer *)0xa01ce8;
    cVar9 = IsASurvivorTeam(iVar11);
    pfVar25 = (float *)&stack0xfffffe14;
    if (cVar9 != '\0') {
      local_1f0 = (CTerrorPlayer *)0xa01cf8;
      lVar28 = (longdouble)CountdownTimer::Now();
      if ((float)lVar28 + 0.1 != *(float *)(this + 0x2eb8)) {
                    /* try { // try from 00a02274 to 00a022de has its CatchHandler @ 00a033e2 */
        local_1f0 = (CTerrorPlayer *)0xa02277;
        (**(code **)(*(int *)(this + 0x2eb0) + 4))();
        *(float *)(this + 0x2eb8) = (float)lVar28 + 0.1;
      }
      if (*(float *)(this + 0x2eb4) != 0.1) {
                    /* try { // try from 00a021d5 to 00a021d7 has its CatchHandler @ 00a033e2 */
        local_1f0 = (CTerrorPlayer *)0xa021d8;
        (**(code **)(*(int *)(this + 0x2eb0) + 4))();
        *(undefined4 *)(this + 0x2eb4) = 0x3dcccccd;
      }
      if (*(float *)(this + 0x3bbc) <= 0.0) {
        local_1f0 = (CTerrorPlayer *)0xa022bc;
        iVar11 = CDirectorTacticalServices::GetCommonInfectedCount();
        local_1f0 = (CTerrorPlayer *)0xa022df;
        iVar14 = CDirector::GetScriptValue
                           (TheDirector,"MusicDynamicMobSpawnSize",
                            *(int *)(DirectorPrivate_DirectorMusicDynamicMobSpawnSize._28_4_ + 0x30)
                           );
        pfVar25 = (float *)&stack0xfffffe14;
        if (iVar11 <= iVar14) goto LAB_00a00d98;
        iVar11 = *(int *)(ZombieMobMusicSize._28_4_ + 0x30);
        local_70 = (CTerrorPlayer *)0x0;
        local_6c = (CTerrorPlayer *)0x0;
        local_68 = 0.0;
        local_64 = 0;
        local_60 = (CTerrorPlayer *)0x0;
        local_5c = 0;
        local_58 = 0;
        local_54 = 0;
        local_50 = 0;
        local_4c = 0;
        local_48 = this;
                    /* try { // try from 00a02352 to 00a023a6 has its CatchHandler @ 00a033bc */
        local_1f0 = (CTerrorPlayer *)0xa02357;
        CBasePlayer::EyeVectors((CBasePlayer *)this,(Vector *)&local_44,(Vector *)0x0,(Vector *)0x0)
        ;
        local_1f0 = (CTerrorPlayer *)0xa0236f;
        (**(code **)(*(int *)local_48 + 0x234))();
        ppCVar27 = &local_1f0;
        local_38 = local_fc;
        local_34 = local_f8;
        local_30 = local_f4;
        local_1f0 = local_48;
        local_2c = (**(code **)(*(int *)local_48 + 0x52c))();
        local_28 = 0;
        local_20 = 99999.0;
        local_24 = iVar11;
                    /* try { // try from 00a023c7 to 00a024b3 has its CatchHandler @ 00a03324 */
        iVar11 = TheNextBots();
        uVar12 = (uint)*(ushort *)(iVar11 + 0x10);
        if (uVar12 != 0xffff) {
          iVar14 = *(int *)(iVar11 + 4);
          ppCVar26 = &local_1f0;
          do {
            local_1b4 = &local_5c;
            piVar20 = *(int **)(iVar14 + uVar12 * 8);
            iVar14 = *piVar20;
            *ppCVar26 = (CTerrorPlayer *)piVar20;
            pcVar7 = *(code **)(iVar14 + 0xb4);
            ppCVar26[-1] = (CTerrorPlayer *)0xa0243a;
            piVar13 = (int *)(*pcVar7)();
            iVar14 = *piVar13;
            *ppCVar26 = (CTerrorPlayer *)piVar13;
            pcVar7 = *(code **)(iVar14 + 300);
            ppCVar26[-1] = (CTerrorPlayer *)0xa02447;
            cVar9 = (*pcVar7)();
            piVar20 = (int *)ppCVar26;
            if (cVar9 != '\0') {
              *ppCVar26 = (CTerrorPlayer *)piVar13;
              ppCVar26[-1] = (CTerrorPlayer *)0xa02453;
              iVar14 = CBaseEntity::GetTeamNumber((CBaseEntity *)*ppCVar26);
              if (iVar14 == 3) {
                iVar14 = *piVar13;
                *ppCVar26 = (CTerrorPlayer *)piVar13;
                pcVar7 = *(code **)(iVar14 + 0x14c);
                ppCVar26[-1] = (CTerrorPlayer *)0xa02463;
                local_198 = (int *)(*pcVar7)();
                if (local_198 != (int *)0x0) {
                  iVar14 = *local_198;
                  *ppCVar26 = (CTerrorPlayer *)local_198;
                  pcVar7 = *(code **)(iVar14 + 0x594);
                  ppCVar26[-1] = (CTerrorPlayer *)0xa02478;
                  piVar15 = (int *)(*pcVar7)();
                  if (piVar15 != (int *)0x0) {
                    iVar14 = *piVar15;
                    ppCVar26[1] = (CTerrorPlayer *)0x0;
                    *ppCVar26 = (CTerrorPlayer *)piVar15;
                    pcVar7 = *(code **)(iVar14 + 0x114);
                    ppCVar26[-1] = (CTerrorPlayer *)0xa02493;
                    cVar9 = (*pcVar7)();
                    if (cVar9 != '\0') {
                      *ppCVar26 = (CTerrorPlayer *)&local_70;
                      ppCVar26[2] = (CTerrorPlayer *)&local_198;
                      ppCVar26[1] = (CTerrorPlayer *)local_64;
                      ppCVar26[-1] = (CTerrorPlayer *)0xa024b4;
                      CUtlVector<Infected*,CUtlMemory<Infected*,int>>::InsertBefore
                                ((CUtlVector<Infected*,CUtlMemory<Infected*,int>> *)*ppCVar26,
                                 (int)ppCVar26[1],(Infected **)ppCVar26[2]);
                      goto LAB_00a02400;
                    }
                  }
                  iVar14 = *local_198;
                  *ppCVar26 = (CTerrorPlayer *)local_198;
                    /* try { // try from 00a026e9 to 00a02ab6 has its CatchHandler @ 00a03324 */
                  pcVar7 = *(code **)(iVar14 + 0x52c);
                  ppCVar26[-1] = (CTerrorPlayer *)0xa026ef;
                  iVar14 = (*pcVar7)();
                  if ((iVar14 != 0) && (local_2c != 0)) {
                    ppCVar26[1] = (CTerrorPlayer *)iVar14;
                    *ppCVar26 = (CTerrorPlayer *)local_2c;
                    ppCVar26[-1] = (CTerrorPlayer *)0xa0270e;
                    cVar9 = TerrorNavArea::IsCompletelyVisible
                                      ((TerrorNavArea *)*ppCVar26,(TerrorNavArea *)ppCVar26[1]);
                    if (cVar9 != '\0') {
                      iVar14 = *piVar13;
                      ppCVar26[1] = (CTerrorPlayer *)piVar13;
                      *ppCVar26 = (CTerrorPlayer *)&local_15c;
                      pcVar7 = *(code **)(iVar14 + 0x234);
                      ppCVar26[-1] = (CTerrorPlayer *)0xa0272b;
                      (*pcVar7)();
                      ppCVar27 = ppCVar26 + -1;
                      local_f0 = local_15c - local_38;
                      local_ec = local_158 - local_34;
                      local_e8 = local_154 - local_30;
                      iVar14 = *(int *)local_48;
                      ppCVar26[1] = (CTerrorPlayer *)0x0;
                      *ppCVar26 = (CTerrorPlayer *)&local_f0;
                      ppCVar26[-1] = local_48;
                      pcVar7 = *(code **)(iVar14 + 0x420);
                      ppCVar26[-2] = (CTerrorPlayer *)0xa0278d;
                      cVar9 = (*pcVar7)();
                      piVar20 = (int *)(ppCVar26 + -1);
                      if ((cVar9 != '\0') &&
                         (fVar29 = SQRT(local_ec * local_ec + local_e8 * local_e8 +
                                        local_f0 * local_f0), piVar20 = (int *)(ppCVar26 + -1),
                         fVar29 < *(float *)(MusicDynamicAttackCIRangeMax._28_4_ + 0x2c) ||
                         fVar29 == *(float *)(MusicDynamicAttackCIRangeMax._28_4_ + 0x2c))) {
                        ppCVar26[1] = (CTerrorPlayer *)&local_198;
                        *ppCVar26 = (CTerrorPlayer *)local_50;
                        ppCVar26[-1] = (CTerrorPlayer *)local_1b4;
                        ppCVar26[-2] = (CTerrorPlayer *)0xa0280a;
                        CUtlVector<Infected*,CUtlMemory<Infected*,int>>::InsertBefore
                                  ((CUtlVector<Infected*,CUtlMemory<Infected*,int>> *)ppCVar26[-1],
                                   (int)*ppCVar26,(Infected **)ppCVar26[1]);
                        if (local_20 <= fVar29) {
                          fVar29 = local_20;
                        }
                        local_28 = local_28 + 1;
                        local_20 = fVar29;
                        piVar20 = (int *)(ppCVar26 + -1);
                        if (local_24 <= local_28) break;
                      }
                    }
                  }
                }
              }
            }
LAB_00a02400:
            ppCVar27 = (CTerrorPlayer **)piVar20;
            iVar14 = *(int *)(iVar11 + 4);
            uVar12 = (uint)*(ushort *)(iVar14 + 6 + uVar12 * 8);
            ppCVar26 = ppCVar27;
          } while (uVar12 != 0xffff);
        }
        iVar11 = local_50;
        if (0 < *(int *)(ShowInfected._28_4_ + 0x30)) {
          *ppCVar27 = (CTerrorPlayer *)"***ATTACKING: %i\n";
          ppCVar27[1] = (CTerrorPlayer *)iVar11;
          ppCVar27[-1] = (CTerrorPlayer *)0xa0284d;
          DevMsg((char *)*ppCVar27);
          if (0 < local_50) {
            local_1b0 = 0;
            do {
              iVar11 = *(int *)(local_5c + local_1b0 * 4);
              if ((*(byte *)(iVar11 + 0x14d) & 8) != 0) {
                *ppCVar27 = (CTerrorPlayer *)iVar11;
                ppCVar27[-1] = (CTerrorPlayer *)0xa02885;
                CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*ppCVar27);
              }
              pCVar17 = *(CTerrorPlayer **)(iVar11 + 0x2e4);
              fVar29 = *(float *)(iVar11 + 0x2e8);
              ppuVar6 = *(undefined ***)(iVar11 + 0x2e0);
              ppCVar27[1] = (CTerrorPlayer *)&local_b4;
              ppCVar27[6] = (CTerrorPlayer *)0x40000000;
              ppCVar27[5] = (CTerrorPlayer *)0x1;
              ppCVar27[4] = (CTerrorPlayer *)0x0;
              local_ac = fVar29 + 5.0;
              ppCVar27[3] = (CTerrorPlayer *)0x0;
              ppCVar27[2] = (CTerrorPlayer *)0xff;
              *ppCVar27 = (CTerrorPlayer *)&local_c0;
              local_b4 = ppuVar6;
              local_b0 = pCVar17;
              local_c0 = ppuVar6;
              local_bc = pCVar17;
              local_b8 = fVar29 - 5.0;
              ppCVar27[-1] = (CTerrorPlayer *)0xa02945;
              NDebugOverlay::Line((Vector *)*ppCVar27,(Vector *)ppCVar27[1],(int)ppCVar27[2],
                                  (int)ppCVar27[3],(int)ppCVar27[4],SUB41(ppCVar27[5],0),
                                  (float)ppCVar27[6]);
              ppCVar27[6] = (CTerrorPlayer *)0x40000000;
              ppCVar27[5] = (CTerrorPlayer *)0x1;
              ppCVar27[4] = (CTerrorPlayer *)0x0;
              ppCVar27[1] = (CTerrorPlayer *)&local_b4;
              ppCVar27[3] = (CTerrorPlayer *)0x0;
              ppCVar27[2] = (CTerrorPlayer *)0xff;
              local_b0 = (CTerrorPlayer *)((float)pCVar17 + 5.0);
              *ppCVar27 = (CTerrorPlayer *)&local_c0;
              local_b4 = ppuVar6;
              local_ac = fVar29;
              local_c0 = ppuVar6;
              local_bc = (CTerrorPlayer *)((float)pCVar17 - 5.0);
              local_b8 = fVar29;
              ppCVar27[-1] = (CTerrorPlayer *)0xa029e4;
              NDebugOverlay::Line((Vector *)*ppCVar27,(Vector *)ppCVar27[1],(int)ppCVar27[2],
                                  (int)ppCVar27[3],(int)ppCVar27[4],SUB41(ppCVar27[5],0),
                                  (float)ppCVar27[6]);
              ppCVar27[6] = (CTerrorPlayer *)0x40000000;
              ppCVar27[5] = (CTerrorPlayer *)0x1;
              ppCVar27[1] = (CTerrorPlayer *)&local_b4;
              *ppCVar27 = (CTerrorPlayer *)&local_c0;
              ppCVar27[4] = (CTerrorPlayer *)0x0;
              ppCVar27[3] = (CTerrorPlayer *)0x0;
              ppCVar27[2] = (CTerrorPlayer *)0xff;
              local_b4 = (undefined **)((float)ppuVar6 + 5.0);
              local_b0 = pCVar17;
              local_ac = fVar29;
              local_c0 = (undefined **)((float)ppuVar6 - 5.0);
              local_bc = pCVar17;
              local_b8 = fVar29;
              ppCVar27[-1] = (CTerrorPlayer *)0xa02a7d;
              NDebugOverlay::Line((Vector *)*ppCVar27,(Vector *)ppCVar27[1],(int)ppCVar27[2],
                                  (int)ppCVar27[3],(int)ppCVar27[4],SUB41(ppCVar27[5],0),
                                  (float)ppCVar27[6]);
              local_1b0 = local_1b0 + 1;
            } while (local_1b0 < local_50);
          }
        }
        if (*(int *)(ZombieMobMusicSize._28_4_ + 0x30) <= local_28) {
          ppCVar27[1] = (CTerrorPlayer *)local_28;
          *ppCVar27 = this + 0x3ab4;
          ppCVar27[-1] = (CTerrorPlayer *)0xa02ab7;
          Music::OnMobApproachingNear((Music *)*ppCVar27,(int)ppCVar27[1]);
        }
      }
      else {
        local_1f0 = (CTerrorPlayer *)0xa01d60;
        lVar28 = (longdouble)CountdownTimer::Now();
        if ((float)lVar28 + 1.0 != *(float *)(this + 0x2eb8)) {
                    /* try { // try from 00a024cc to 00a024ce has its CatchHandler @ 00a033e2 */
          local_1f0 = (CTerrorPlayer *)0xa024cf;
          (**(code **)(*(int *)(this + 0x2eb0) + 4))();
          *(float *)(this + 0x2eb8) = (float)lVar28 + 1.0;
        }
        if (*(float *)(this + 0x2eb4) != 1.0) {
          local_1f0 = (CTerrorPlayer *)0xa02292;
          (**(code **)(*(int *)(this + 0x2eb0) + 4))();
          *(undefined4 *)(this + 0x2eb4) = 0x3f800000;
        }
        local_1f0 = (CTerrorPlayer *)0xa01dc1;
        iVar11 = CDirector::GetScriptValue
                           (TheDirector,"MusicDynamicMobScanStopSize",
                            *(int *)(DirectorPrivate_DirectorMusicDynamicMobScanStopSize._28_4_ +
                                    0x30));
        local_70 = (CTerrorPlayer *)0x0;
        local_6c = (CTerrorPlayer *)0x0;
        local_68 = 0.0;
        local_64 = 0;
        local_60 = (CTerrorPlayer *)0x0;
        local_5c = 0;
        local_58 = 0;
        local_54 = 0;
        local_50 = 0;
        local_4c = 0;
        local_48 = this;
                    /* try { // try from 00a01e26 to 00a01e7a has its CatchHandler @ 00a033dd */
        local_1f0 = (CTerrorPlayer *)0xa01e2b;
        CBasePlayer::EyeVectors((CBasePlayer *)this,(Vector *)&local_44,(Vector *)0x0,(Vector *)0x0)
        ;
        local_1f0 = (CTerrorPlayer *)0xa01e43;
        (**(code **)(*(int *)local_48 + 0x234))();
        ppCVar27 = &local_1f0;
        local_38 = local_e4;
        local_34 = local_e0;
        local_30 = local_dc;
        local_1f0 = local_48;
        local_2c = (**(code **)(*(int *)local_48 + 0x52c))();
        local_28 = 0;
        local_20 = 99999.0;
        local_24 = iVar11;
                    /* try { // try from 00a01e9b to 00a01f83 has its CatchHandler @ 00a033b7 */
        iVar11 = TheNextBots();
        uVar12 = (uint)*(ushort *)(iVar11 + 0x10);
        if (uVar12 != 0xffff) {
          iVar14 = *(int *)(iVar11 + 4);
          ppCVar26 = &local_1f0;
          do {
            piVar20 = *(int **)(iVar14 + uVar12 * 8);
            iVar14 = *piVar20;
            *ppCVar26 = (CTerrorPlayer *)piVar20;
            pcVar7 = *(code **)(iVar14 + 0xb4);
            ppCVar26[-1] = (CTerrorPlayer *)0xa01f0a;
            piVar13 = (int *)(*pcVar7)();
            iVar14 = *piVar13;
            *ppCVar26 = (CTerrorPlayer *)piVar13;
            pcVar7 = *(code **)(iVar14 + 300);
            ppCVar26[-1] = (CTerrorPlayer *)0xa01f17;
            cVar9 = (*pcVar7)();
            piVar20 = (int *)ppCVar26;
            if (cVar9 != '\0') {
              *ppCVar26 = (CTerrorPlayer *)piVar13;
              ppCVar26[-1] = (CTerrorPlayer *)0xa01f23;
              iVar14 = CBaseEntity::GetTeamNumber((CBaseEntity *)*ppCVar26);
              if (iVar14 == 3) {
                iVar14 = *piVar13;
                *ppCVar26 = (CTerrorPlayer *)piVar13;
                pcVar7 = *(code **)(iVar14 + 0x14c);
                ppCVar26[-1] = (CTerrorPlayer *)0xa01f33;
                local_170 = (CTerrorPlayer *)(*pcVar7)();
                if (local_170 != (CTerrorPlayer *)0x0) {
                  iVar14 = *(int *)local_170;
                  *ppCVar26 = local_170;
                  pcVar7 = *(code **)(iVar14 + 0x594);
                  ppCVar26[-1] = (CTerrorPlayer *)0xa01f48;
                  piVar15 = (int *)(*pcVar7)();
                  if (piVar15 != (int *)0x0) {
                    iVar14 = *piVar15;
                    ppCVar26[1] = (CTerrorPlayer *)0x0;
                    *ppCVar26 = (CTerrorPlayer *)piVar15;
                    pcVar7 = *(code **)(iVar14 + 0x114);
                    ppCVar26[-1] = (CTerrorPlayer *)0xa01f63;
                    cVar9 = (*pcVar7)();
                    if (cVar9 != '\0') {
                      *ppCVar26 = (CTerrorPlayer *)&local_70;
                      ppCVar26[2] = (CTerrorPlayer *)&local_170;
                      ppCVar26[1] = (CTerrorPlayer *)local_64;
                      ppCVar26[-1] = (CTerrorPlayer *)0xa01f84;
                      CUtlVector<Infected*,CUtlMemory<Infected*,int>>::InsertBefore
                                ((CUtlVector<Infected*,CUtlMemory<Infected*,int>> *)*ppCVar26,
                                 (int)ppCVar26[1],(Infected **)ppCVar26[2]);
                      goto LAB_00a01ed0;
                    }
                  }
                  iVar14 = *(int *)local_170;
                  *ppCVar26 = local_170;
                    /* try { // try from 00a0205b to 00a0217b has its CatchHandler @ 00a033b7 */
                  pcVar7 = *(code **)(iVar14 + 0x52c);
                  ppCVar26[-1] = (CTerrorPlayer *)0xa02061;
                  iVar14 = (*pcVar7)();
                  if ((iVar14 != 0) && (local_2c != 0)) {
                    ppCVar26[1] = (CTerrorPlayer *)iVar14;
                    *ppCVar26 = (CTerrorPlayer *)local_2c;
                    ppCVar26[-1] = (CTerrorPlayer *)0xa02080;
                    cVar9 = TerrorNavArea::IsCompletelyVisible
                                      ((TerrorNavArea *)*ppCVar26,(TerrorNavArea *)ppCVar26[1]);
                    if (cVar9 != '\0') {
                      iVar14 = *piVar13;
                      ppCVar26[1] = (CTerrorPlayer *)piVar13;
                      *ppCVar26 = (CTerrorPlayer *)&local_150;
                      pcVar7 = *(code **)(iVar14 + 0x234);
                      ppCVar26[-1] = (CTerrorPlayer *)0xa0209d;
                      (*pcVar7)();
                      ppCVar27 = ppCVar26 + -1;
                      local_d8 = local_150 - local_38;
                      local_d4 = local_14c - local_34;
                      local_d0 = local_148 - local_30;
                      iVar14 = *(int *)local_48;
                      ppCVar26[1] = (CTerrorPlayer *)0x0;
                      *ppCVar26 = (CTerrorPlayer *)&local_d8;
                      ppCVar26[-1] = local_48;
                      pcVar7 = *(code **)(iVar14 + 0x420);
                      ppCVar26[-2] = (CTerrorPlayer *)0xa020ff;
                      cVar9 = (*pcVar7)();
                      piVar20 = (int *)(ppCVar26 + -1);
                      if ((cVar9 != '\0') &&
                         (fVar29 = SQRT(local_d0 * local_d0 + local_d4 * local_d4 +
                                        local_d8 * local_d8), piVar20 = (int *)(ppCVar26 + -1),
                         fVar29 < *(float *)(MusicDynamicAttackCIRangeMax._28_4_ + 0x2c) ||
                         fVar29 == *(float *)(MusicDynamicAttackCIRangeMax._28_4_ + 0x2c))) {
                        ppCVar26[1] = (CTerrorPlayer *)&local_170;
                        *ppCVar26 = (CTerrorPlayer *)local_50;
                        ppCVar26[-1] = (CTerrorPlayer *)&local_5c;
                        ppCVar26[-2] = (CTerrorPlayer *)0xa0217c;
                        CUtlVector<Infected*,CUtlMemory<Infected*,int>>::InsertBefore
                                  ((CUtlVector<Infected*,CUtlMemory<Infected*,int>> *)ppCVar26[-1],
                                   (int)*ppCVar26,(Infected **)ppCVar26[1]);
                        if (local_20 <= fVar29) {
                          fVar29 = local_20;
                        }
                        local_28 = local_28 + 1;
                        local_20 = fVar29;
                        piVar20 = (int *)(ppCVar26 + -1);
                        if (local_24 <= local_28) break;
                      }
                    }
                  }
                }
              }
            }
LAB_00a01ed0:
            ppCVar27 = (CTerrorPlayer **)piVar20;
            iVar14 = *(int *)(iVar11 + 4);
            uVar12 = (uint)*(ushort *)(iVar14 + 6 + uVar12 * 8);
            ppCVar26 = ppCVar27;
          } while (uVar12 != 0xffff);
        }
        ppCVar27[1] = (CTerrorPlayer *)local_28;
        *ppCVar27 = this + 0x3ab4;
                    /* try { // try from 00a021f7 to 00a021fb has its CatchHandler @ 00a033b7 */
        ppCVar27[-1] = (CTerrorPlayer *)0xa021fc;
        Music::OnMobApproachingNear((Music *)*ppCVar27,(int)ppCVar27[1]);
      }
      local_1b4 = &local_5c;
      local_50 = 0;
      *ppCVar27 = (CTerrorPlayer *)local_1b4;
      ppCVar27[-1] = (CTerrorPlayer *)0xa02211;
      CUtlMemory<Infected*,int>::Purge((CUtlMemory<Infected*,int> *)*ppCVar27);
      iVar11 = local_5c;
      *ppCVar27 = (CTerrorPlayer *)local_1b4;
      local_4c = iVar11;
      ppCVar27[-1] = (CTerrorPlayer *)0xa0221f;
      CUtlMemory<Infected*,int>::Purge((CUtlMemory<Infected*,int> *)*ppCVar27);
      *ppCVar27 = (CTerrorPlayer *)&local_70;
      local_64 = 0;
      ppCVar27[-1] = (CTerrorPlayer *)0xa0222e;
      CUtlMemory<Infected*,int>::Purge((CUtlMemory<Infected*,int> *)*ppCVar27);
      pCVar17 = local_70;
      *ppCVar27 = (CTerrorPlayer *)&local_70;
      local_60 = pCVar17;
      ppCVar27[-1] = (CTerrorPlayer *)0xa0223c;
      CUtlMemory<Infected*,int>::Purge((CUtlMemory<Infected*,int> *)*ppCVar27);
      pfVar25 = (float *)ppCVar27;
    }
  }
LAB_00a00d98:
  if (*(int *)(gpGlobals + 4) == CheckEnemySightings()::iRecentFrame) goto LAB_00a01778;
  pCVar17 = this + 0x2ebc;
  *pfVar25 = (float)pCVar17;
  pfVar25[-1] = 1.4698604e-38;
  lVar28 = (longdouble)CountdownTimer::Now();
  if ((float)lVar28 < *(float *)(this + 0x2ec4)) goto LAB_00a01778;
  CheckEnemySightings()::iRecentFrame = *(int *)(gpGlobals + 4);
  *pfVar25 = (float)pCVar17;
  pfVar25[-1] = 1.4698671e-38;
  lVar28 = (longdouble)CountdownTimer::Now();
  if ((float)lVar28 + 0.5 != *(float *)(this + 0x2ec4)) {
    iVar11 = *(int *)(this + 0x2ebc);
    *pfVar25 = (float)pCVar17;
    pfVar25[1] = (float)(this + 0x2ec4);
    pcVar7 = *(code **)(iVar11 + 4);
    pfVar25[-1] = 1.470525e-38;
    (*pcVar7)();
    *(float *)(this + 0x2ec4) = (float)lVar28 + 0.5;
  }
  if (*(float *)(this + 0x2ec0) != 0.5) {
    iVar11 = *(int *)(this + 0x2ebc);
    *pfVar25 = (float)pCVar17;
    pfVar25[1] = (float)(this + 0x2ec0);
                    /* try { // try from 00a01fa3 to 00a01fa5 has its CatchHandler @ 00a033e2 */
    pcVar7 = *(code **)(iVar11 + 4);
    pfVar25[-1] = 1.4705033e-38;
    (*pcVar7)();
    *(undefined4 *)(this + 0x2ec0) = 0x3f000000;
  }
  *pfVar25 = (float)this;
  pfVar25[-1] = 1.4698769e-38;
  iVar11 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar25);
  *pfVar25 = (float)iVar11;
  pfVar25[-1] = 1.469878e-38;
  cVar9 = IsASurvivorTeam(iVar11);
  if (cVar9 != '\0') {
    pfVar25[3] = 0.0;
    pfVar25[2] = 0.0;
    pfVar25[1] = (float)&local_6c;
    *pfVar25 = (float)this;
    local_70 = this;
    pfVar25[-1] = 1.4698839e-38;
    CBasePlayer::EyeVectors
              ((CBasePlayer *)*pfVar25,(Vector *)pfVar25[1],(Vector *)pfVar25[2],
               (Vector *)pfVar25[3]);
    iVar11 = 1;
    piVar20 = (int *)pfVar25;
    if (0 < *(int *)(gpGlobals + 0x14)) {
LAB_00a00eb5:
      *piVar20 = iVar11;
      piVar20[-1] = 0xa00ebd;
      piVar13 = (int *)UTIL_PlayerByIndex(*piVar20);
      pfVar25 = (float *)piVar20;
      if ((piVar13 != (int *)0x0) && (piVar13[0xc] != 0)) {
        if (piVar13[0xc] - *(int *)(gpGlobals + 0x58) >> 4 == 0) {
          iVar11 = iVar11 + 1;
          if (*(int *)(gpGlobals + 0x14) < iVar11) goto LAB_00a00ee4;
          goto LAB_00a00eb5;
        }
        iVar14 = *piVar13;
        *piVar20 = (int)piVar13;
        pcVar7 = *(code **)(iVar14 + 0x16c);
        piVar20[-1] = 0xa00e83;
        cVar9 = (*pcVar7)();
        if ((cVar9 != '\0') && (piVar13[0x7db] != 2)) {
          iVar14 = *piVar13;
          *piVar20 = (int)piVar13;
          pcVar7 = *(code **)(iVar14 + 0x148);
          piVar20[-1] = 0xa00e9b;
          iVar14 = (*pcVar7)();
          if (iVar14 == 0) {
            iVar14 = *piVar13;
            *piVar20 = (int)piVar13;
                    /* try { // try from 00a02ac1 to 00a02c15 has its CatchHandler @ 00a033e2 */
            pcVar7 = *(code **)(iVar14 + 300);
            piVar20[-1] = 0xa02ac7;
            cVar9 = (*pcVar7)();
            if (cVar9 == '\0') goto LAB_00a00ea8;
            *piVar20 = (int)piVar13;
            piVar20[-1] = 0xa02ad7;
            iVar14 = CBaseEntity::GetTeamNumber((CBaseEntity *)*piVar20);
            if (iVar14 == 3) {
              iVar14 = *piVar13;
              *piVar20 = (int)piVar13;
              pcVar7 = *(code **)(iVar14 + 0x148);
              piVar20[-1] = 0xa02aeb;
              piVar15 = (int *)(*pcVar7)();
              if (piVar15 != (int *)0x0) {
                iVar14 = *piVar15;
                *piVar20 = (int)piVar15;
                pcVar7 = *(code **)(iVar14 + 0xc4);
                piVar20[-1] = 0xa02afa;
                piVar15 = (int *)(*pcVar7)();
                if (piVar15 != (int *)0x0) {
                  iVar14 = *piVar15;
                  piVar20[1] = 0;
                  *piVar20 = (int)piVar15;
                  pcVar7 = *(code **)(iVar14 + 0x114);
                  piVar20[-1] = 0xa02b11;
                  cVar9 = (*pcVar7)();
                  if (cVar9 != '\0') goto LAB_00a00ea8;
                }
              }
              iVar14 = *(int *)local_70;
              piVar20[1] = (int)local_70;
              *piVar20 = (int)&local_138;
              pcVar7 = *(code **)(iVar14 + 0x234);
              piVar20[-1] = 0xa02b31;
              (*pcVar7)();
              iVar14 = *piVar13;
              *piVar20 = (int)piVar13;
              piVar20[-1] = (int)&local_144;
              pcVar7 = *(code **)(iVar14 + 0x234);
              piVar20[-2] = 0xa02b49;
              (*pcVar7)();
              local_cc = local_144 - local_138;
              local_c8 = local_140 - local_134;
              local_c4 = local_13c - local_130;
              iVar14 = *(int *)local_70;
              *piVar20 = 0;
              piVar20[-1] = (int)&local_cc;
              piVar20[-2] = (int)local_70;
              pcVar7 = *(code **)(iVar14 + 0x420);
              piVar20[-3] = 0xa02bb4;
              cVar9 = (*pcVar7)();
              pfVar25 = (float *)(piVar20 + -2);
              if ((cVar9 != '\0') &&
                 (pfVar25 = (float *)(piVar20 + -2),
                 local_c4 * local_c4 + local_c8 * local_c8 + local_cc * local_cc <=
                 *(float *)(SurvivorIntensityDecayThreatRange._28_4_ + 0x2c) *
                 *(float *)(SurvivorIntensityDecayThreatRange._28_4_ + 0x2c))) {
                *piVar20 = 1;
                piVar20[-1] = (int)piVar13;
                piVar20[-2] = (int)local_70;
                piVar20[-3] = 0xa02c16;
                cVar9 = CBaseCombatCharacter::IsAbleToSee();
                pfVar25 = (float *)(piVar20 + -2);
                if (cVar9 != '\0') goto LAB_00a0109a;
              }
            }
          }
        }
      }
LAB_00a00ea8:
      iVar11 = iVar11 + 1;
      piVar20 = (int *)pfVar25;
      if (*(int *)(gpGlobals + 0x14) < iVar11) goto LAB_00a00ee4;
      goto LAB_00a00eb5;
    }
LAB_00a00ee4:
    *(undefined4 *)((int)pfVar25 + -4) = 0xa00ee9;
    iVar11 = TheNextBots();
    uVar12 = (uint)*(ushort *)(iVar11 + 0x10);
    if (uVar12 != 0xffff) {
      iVar14 = *(int *)(iVar11 + 4);
      piVar20 = (int *)pfVar25;
      do {
        piVar13 = *(int **)(iVar14 + uVar12 * 8);
        iVar14 = *piVar13;
        *piVar20 = (int)piVar13;
        pcVar7 = *(code **)(iVar14 + 0xb4);
        piVar20[-1] = 0xa00f3e;
        piVar13 = (int *)(*pcVar7)();
        iVar14 = *piVar13;
        *piVar20 = (int)piVar13;
        pcVar7 = *(code **)(iVar14 + 300);
        piVar20[-1] = 0xa00f4b;
        cVar9 = (*pcVar7)();
        pfVar25 = (float *)piVar20;
        if (cVar9 != '\0') {
          *piVar20 = (int)piVar13;
          piVar20[-1] = 0xa00f57;
          iVar14 = CBaseEntity::GetTeamNumber((CBaseEntity *)*piVar20);
          if (iVar14 == 3) {
            iVar14 = *piVar13;
            *piVar20 = (int)piVar13;
            pcVar7 = *(code **)(iVar14 + 0x148);
            piVar20[-1] = 0xa00f67;
            piVar15 = (int *)(*pcVar7)();
            if (piVar15 != (int *)0x0) {
              iVar14 = *piVar15;
              *piVar20 = (int)piVar15;
              pcVar7 = *(code **)(iVar14 + 0xc4);
              piVar20[-1] = 0xa00f76;
              piVar15 = (int *)(*pcVar7)();
              if (piVar15 != (int *)0x0) {
                iVar14 = *piVar15;
                piVar20[1] = 0;
                *piVar20 = (int)piVar15;
                pcVar7 = *(code **)(iVar14 + 0x114);
                piVar20[-1] = 0xa00f8d;
                cVar9 = (*pcVar7)();
                if (cVar9 != '\0') goto LAB_00a00f10;
              }
            }
            iVar14 = *(int *)local_70;
            piVar20[1] = (int)local_70;
            *piVar20 = (int)&local_120;
            pcVar7 = *(code **)(iVar14 + 0x234);
            piVar20[-1] = 0xa00fad;
            (*pcVar7)();
            iVar14 = *piVar13;
            *piVar20 = (int)piVar13;
            piVar20[-1] = (int)&local_12c;
            pcVar7 = *(code **)(iVar14 + 0x234);
            piVar20[-2] = 0xa00fc5;
            (*pcVar7)();
            local_b4 = (undefined **)(local_12c - local_120);
            local_b0 = (CTerrorPlayer *)(local_128 - local_11c);
            local_ac = local_124 - local_118;
            iVar14 = *(int *)local_70;
            *piVar20 = 0;
            piVar20[-1] = (int)&local_b4;
            piVar20[-2] = (int)local_70;
            pcVar7 = *(code **)(iVar14 + 0x420);
            piVar20[-3] = 0xa01030;
            cVar9 = (*pcVar7)();
            pfVar25 = (float *)(piVar20 + -2);
            if ((cVar9 != '\0') &&
               (pfVar25 = (float *)(piVar20 + -2),
               (float)local_b0 * (float)local_b0 + (float)local_b4 * (float)local_b4 +
               local_ac * local_ac <=
               *(float *)(SurvivorIntensityDecayThreatRange._28_4_ + 0x2c) *
               *(float *)(SurvivorIntensityDecayThreatRange._28_4_ + 0x2c))) {
              *piVar20 = 1;
              piVar20[-1] = (int)piVar13;
              piVar20[-2] = (int)local_70;
              piVar20[-3] = 0xa01092;
              cVar9 = CBaseCombatCharacter::IsAbleToSee();
              pfVar25 = (float *)(piVar20 + -2);
              if (cVar9 != '\0') goto LAB_00a0109a;
            }
          }
        }
LAB_00a00f10:
        iVar14 = *(int *)(iVar11 + 4);
        uVar12 = (uint)*(ushort *)(iVar14 + 6 + uVar12 * 8);
        piVar20 = (int *)pfVar25;
      } while (uVar12 != 0xffff);
    }
  }
LAB_00a010d8:
  *pfVar25 = (float)this;
  pfVar25[-1] = 1.4699733e-38;
  iVar11 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar25);
  *pfVar25 = (float)iVar11;
  pfVar25[-1] = 1.4699744e-38;
  cVar9 = IsASurvivorTeam(iVar11);
  local_170 = this;
  iVar11 = 3 - (uint)(cVar9 == '\0');
  local_16c = iVar11;
  *pfVar25 = (float)&local_170;
  pfVar25[-1] = 1.4699813e-38;
  bVar10 = ForEachPlayer<VisibleToTeamScan>((VisibleToTeamScan *)*pfVar25);
  if (!bVar10) {
    *pfVar25 = (float)(this + 0x3114);
    pfVar25[-1] = 1.4699838e-38;
    lVar28 = (longdouble)IntervalTimer::Now();
    if ((float)lVar28 != *(float *)(this + 0x3118)) {
      iVar14 = *(int *)(this + 0x3114);
      *pfVar25 = (float)(this + 0x3114);
      pfVar25[1] = (float)(this + 0x3118);
                    /* try { // try from 00a0201d to 00a02040 has its CatchHandler @ 00a033e2 */
      pcVar7 = *(code **)(iVar14 + 4);
      pfVar25[-1] = 1.4705204e-38;
      (*pcVar7)();
      *(float *)(this + 0x3118) = (float)lVar28;
    }
  }
  fVar29 = *(float *)(ZombieAlertDot._28_4_ + 0x2c);
  local_84 = 0;
  iVar14 = *(int *)this;
  local_80 = 0;
  local_b4 = &PTR_operator___00c53020;
  local_7c = 0;
  local_78 = 0.0;
  local_74 = 0;
  local_b0 = this;
  *pfVar25 = (float)this;
                    /* try { // try from 00a01192 to 00a011a9 has its CatchHandler @ 00a03384 */
  pcVar7 = *(code **)(iVar14 + 0x238);
  pfVar25[-1] = 1.4699991e-38;
  uVar16 = (*pcVar7)();
  *pfVar25 = (float)uVar16;
  pfVar25[1] = (float)&local_ac;
  pfVar25[-1] = 1.4700016e-38;
  AngleVectors((QAngle *)*pfVar25,(Vector *)pfVar25[1]);
  iVar14 = 1;
  local_94 = 2000.0;
  local_88 = (CTerrorPlayer *)0x0;
  local_90 = 50.0;
  local_9c = 1.0 - fVar29;
  local_8c = '\0';
  local_a0 = iVar11;
  local_98 = local_9c;
  if (0 < *(int *)(gpGlobals + 0x14)) {
    do {
      while( true ) {
        *pfVar25 = (float)iVar14;
        pfVar25[-1] = 1.4700256e-38;
        pCVar17 = (CTerrorPlayer *)UTIL_PlayerByIndex((int)*pfVar25);
        if ((pCVar17 != (CTerrorPlayer *)0x0) && (*(int *)(pCVar17 + 0x30) != 0)) break;
LAB_00a01240:
        iVar14 = iVar14 + 1;
        if (*(int *)(gpGlobals + 0x14) < iVar14) goto LAB_00a0127c;
      }
      if (*(int *)(pCVar17 + 0x30) - *(int *)(gpGlobals + 0x58) >> 4 != 0) {
        iVar19 = *(int *)pCVar17;
        *pfVar25 = (float)pCVar17;
                    /* try { // try from 00a01215 to 00a01307 has its CatchHandler @ 00a032eb */
        pcVar7 = *(code **)(iVar19 + 0x16c);
        pfVar25[-1] = 1.4700174e-38;
        cVar9 = (*pcVar7)();
        if ((cVar9 != '\0') && (*(int *)(pCVar17 + 0x1f6c) != 2)) {
          iVar19 = *(int *)pCVar17;
          *pfVar25 = (float)pCVar17;
          pcVar7 = *(code **)(iVar19 + 0x148);
          pfVar25[-1] = 1.4700208e-38;
          iVar19 = (*pcVar7)();
          if (iVar19 == 0) {
            local_194 = pCVar17;
            local_184 = 0;
            local_180 = 0;
            if (___atan2f_finite == 0) {
              local_10c = 0;
            }
            else {
              pfVar25[0xb] = (float)"TargetScan()";
              pfVar25[10] = (float)"Unaccounted";
              pfVar25[9] = (float)"(%s)%s";
              pfVar25[8] = (float)&TargetScan<CBaseCombatCharacter>::
                                   operator()(CBaseCombatCharacter*)::tm_fmt;
              pfVar25[7] = 6.5861e-44;
              pfVar25[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
              pfVar25[5] = 0.0;
              pfVar25[3] = 0.0;
              pfVar25[4] = 0.0;
              pfVar25[2] = 0.0;
              pfVar25[1] = (float)&local_184;
              *pfVar25 = (float)___atan2f_finite;
                    /* try { // try from 00a02568 to 00a0256a has its CatchHandler @ 00a032eb */
              pcVar7 = *(code **)(___atan2f_finite + 0x50);
              pfVar25[-1] = 1.4707102e-38;
              (*pcVar7)();
              local_10c = ___atan2f_finite;
            }
            iVar19 = _DAT_0105db00;
            local_114 = local_184;
            local_110 = local_180;
            if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 00a025a7 to 00a025ab has its CatchHandler @ 00a033d9 */
              pfVar25[-1] = 1.4707194e-38;
              iVar18 = ThreadGetCurrentId();
              if (iVar19 == iVar18) {
                if ((char *)*_DAT_0105d15c != "TargetScan()") {
                  pfVar25[4] = 0.0;
                  pfVar25[3] = (float)"Unaccounted";
                  pfVar25[2] = 1.4013e-45;
                  pfVar25[1] = (float)"TargetScan()";
                  *pfVar25 = (float)_DAT_0105d15c;
                    /* try { // try from 00a02e8e to 00a02e9f has its CatchHandler @ 00a033d9 */
                  pfVar25[-1] = 1.4710387e-38;
                  _DAT_0105d15c =
                       (int *)CVProfNode::GetSubNode
                                        ((char *)*pfVar25,(int)pfVar25[1],(char *)pfVar25[2],
                                         (int)pfVar25[3]);
                }
                *pfVar25 = (float)_DAT_0105d15c;
                pfVar25[-1] = 1.4710405e-38;
                CVProfNode::EnterScope();
                DAT_0105d158 = '\0';
              }
            }
            pfVar21 = pfVar25;
            if (local_b0 != local_194) {
              iVar19 = *(int *)local_194;
              *pfVar25 = (float)local_194;
                    /* try { // try from 00a025c7 to 00a025eb has its CatchHandler @ 00a03396 */
              pcVar7 = *(code **)(iVar19 + 300);
              pfVar25[-1] = 1.470724e-38;
              cVar9 = (*pcVar7)();
              if (cVar9 != '\0') {
                if (local_a0 != -1) {
                  *pfVar25 = (float)local_194;
                  pfVar25[-1] = 1.4707283e-38;
                  iVar19 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar25);
                  if (iVar19 != local_a0) goto LAB_00a025f8;
                }
                iVar19 = *(int *)local_194;
                *pfVar25 = (float)local_194;
                    /* try { // try from 00a02eb7 to 00a0329b has its CatchHandler @ 00a03396 */
                pcVar7 = *(code **)(iVar19 + 0x558);
                pfVar25[-1] = 1.4710446e-38;
                cVar9 = (*pcVar7)();
                if (cVar9 == '\0') {
                  iVar19 = *(int *)local_b0;
                  pfVar25[1] = (float)local_b0;
                  *pfVar25 = (float)&local_f0;
                  pcVar7 = *(code **)(iVar19 + 0x234);
                  pfVar25[-1] = 1.4710495e-38;
                  (*pcVar7)();
                  local_e0 = local_a8 * local_90 + local_ec;
                  local_dc = local_a4 * local_90 + local_e8;
                  local_e4 = local_90 * local_ac + local_f0;
                  iVar19 = *(int *)local_194;
                  pfVar25[-1] = (float)local_194;
                  pcVar7 = *(code **)(iVar19 + 0x288);
                  pfVar25[-2] = 1.4710646e-38;
                  uVar16 = (*pcVar7)();
                  pfVar25[3] = 0.0;
                  pfVar25[2] = (float)&local_d8;
                  pfVar25[1] = (float)&local_e4;
                  *pfVar25 = (float)&local_f0;
                  pfVar25[-1] = (float)uVar16;
                  pfVar25[-2] = 1.4710719e-38;
                  CalcClosestPointOnLineSegment
                            ((Vector *)pfVar25[-1],(Vector *)*pfVar25,(Vector *)pfVar25[1],
                             (Vector *)pfVar25[2],(float *)pfVar25[3]);
                  pCVar17 = local_194;
                  if (((byte)local_194[0x14d] & 8) != 0) {
                    pfVar25[-1] = (float)local_194;
                    pfVar25[-2] = 1.4710757e-38;
                    CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar25[-1]);
                  }
                  local_f0 = *(float *)(pCVar17 + 0x2e0);
                  local_ec = *(float *)(pCVar17 + 0x2e4);
                  local_e8 = *(float *)(pCVar17 + 0x2e8);
                  iVar19 = *(int *)(local_194 + 0x194);
                  pfVar25[-1] = (float)(local_194 + 0x194);
                  pcVar7 = *(code **)(iVar19 + 8);
                  pfVar25[-2] = 1.4710892e-38;
                  local_e4 = local_f0;
                  local_e0 = local_ec;
                  local_dc = local_e8;
                  iVar19 = (*pcVar7)();
                  fVar29 = *(float *)(iVar19 + 8);
                  pfVar25[3] = 0.0;
                  pfVar25[2] = (float)&local_fc;
                  local_dc = local_dc + fVar29;
                  pfVar25[1] = (float)&local_e4;
                  *pfVar25 = (float)&local_f0;
                  pfVar25[-1] = (float)&local_d8;
                  pfVar25[-2] = 1.4710994e-38;
                  CalcClosestPointOnLineSegment
                            ((Vector *)pfVar25[-1],(Vector *)*pfVar25,(Vector *)pfVar25[1],
                             (Vector *)pfVar25[2],(float *)pfVar25[3]);
                  if (local_8c != '\0') {
                    pfVar25[5] = -1.0;
                    pfVar25[4] = 1.4013e-45;
                    pfVar25[3] = 3.57331e-43;
                    pfVar25[2] = 3.57331e-43;
                    pfVar25[1] = 3.57331e-43;
                    *pfVar25 = 1.0;
                    pfVar25[-1] = (float)&local_fc;
                    pfVar25[-2] = 1.4711085e-38;
                    NDebugOverlay::Cross3D
                              ((Vector *)pfVar25[-1],*pfVar25,(int)pfVar25[1],(int)pfVar25[2],
                               (int)pfVar25[3],*(bool *)(pfVar25 + 4),pfVar25[5]);
                    pfVar25[5] = -1.0;
                    *pfVar25 = (float)&local_f0;
                    pfVar25[4] = 1.4013e-45;
                    pfVar25[3] = 0.0;
                    pfVar25[2] = 0.0;
                    pfVar25[1] = 3.57331e-43;
                    pfVar25[-1] = (float)&local_e4;
                    pfVar25[-2] = 1.4711175e-38;
                    NDebugOverlay::Line((Vector *)pfVar25[-1],(Vector *)*pfVar25,(int)pfVar25[1],
                                        (int)pfVar25[2],(int)pfVar25[3],*(bool *)(pfVar25 + 4),
                                        pfVar25[5]);
                  }
                  iVar19 = *(int *)local_b0;
                  *pfVar25 = (float)local_b0;
                  pfVar25[-1] = (float)&local_c0;
                  pcVar7 = *(code **)(iVar19 + 0x234);
                  pfVar25[-2] = 1.4711221e-38;
                  (*pcVar7)();
                  pfVar25[-2] = (float)&local_cc;
                  local_cc = local_fc - (float)local_c0;
                  local_c8 = local_f8 - (float)local_bc;
                  local_c4 = local_f4 - local_b8;
                  pfVar25[-3] = 1.4711346e-38;
                  VectorNormalize((Vector *)pfVar25[-2]);
                  pfVar25[-1] = (float)&local_fc;
                  *pfVar25 = (float)&local_c0;
                  pfVar25[-2] = (float)(local_b0 + 0x194);
                  pfVar25[-3] = 1.4711396e-38;
                  CCollisionProperty::CalcNearestPoint
                            ((CCollisionProperty *)pfVar25[-2],(Vector *)pfVar25[-1],
                             (Vector *)*pfVar25);
                  *pfVar25 = (float)&local_70;
                  pfVar25[-1] = (float)&local_c0;
                  pfVar25[-2] = (float)(local_194 + 0x194);
                  pfVar25[-3] = 1.4711446e-38;
                  CCollisionProperty::CalcNearestPoint
                            ((CCollisionProperty *)pfVar25[-2],(Vector *)pfVar25[-1],
                             (Vector *)*pfVar25);
                  pfVar21 = pfVar25 + -2;
                  if ((SQRT((local_b8 - local_68) * (local_b8 - local_68) +
                            ((float)local_bc - (float)local_6c) *
                            ((float)local_bc - (float)local_6c) +
                            ((float)local_c0 - (float)local_70) *
                            ((float)local_c0 - (float)local_70)) <= local_94) &&
                     (fVar29 = local_c4 * local_a4 + local_cc * local_ac + local_c8 * local_a8,
                     pfVar21 = pfVar25 + -2, local_9c < fVar29)) {
                    *pfVar25 = 1.4013e-45;
                    pfVar25[-1] = (float)local_194;
                    pfVar25[-2] = (float)local_b0;
                    pfVar25[-3] = 1.4711732e-38;
                    cVar9 = CBaseCombatCharacter::IsAbleToSee();
                    pfVar21 = pfVar25 + -2;
                    if (cVar9 != '\0') {
                      if (local_98 <= fVar29) {
                        local_98 = fVar29;
                        local_88 = local_194;
                      }
                      *pfVar25 = (float)&local_194;
                      pfVar25[-1] = local_78;
                      pfVar25[-2] = (float)&local_84;
                      pfVar25[-3] = 1.4711835e-38;
                      CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
                      InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
                                    *)pfVar25[-2],(int)pfVar25[-1],(CBaseCombatCharacter **)*pfVar25
                                  );
                      pfVar21 = pfVar25 + -2;
                    }
                  }
                }
              }
            }
LAB_00a025f8:
            iVar19 = _DAT_0105db00;
            if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
              pfVar21[-1] = 1.470734e-38;
              iVar18 = ThreadGetCurrentId();
              if (iVar19 == iVar18) {
                *pfVar21 = (float)_DAT_0105d15c;
                pfVar21[-1] = 1.4710265e-38;
                cVar9 = CVProfNode::ExitScope();
                if (cVar9 != '\0') {
                  _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
                }
                DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
              }
            }
            pfVar25 = pfVar21;
            if (local_10c != 0) {
              pfVar21[5] = 0.0;
              pfVar21[4] = 0.0;
              pfVar21[3] = 0.0;
              *pfVar21 = (float)local_10c;
              pfVar21[1] = (float)local_114;
              pfVar21[2] = (float)local_110;
              pcVar7 = *(code **)(local_10c + 0x54);
              pfVar21[-1] = 1.4707442e-38;
              (*pcVar7)();
            }
          }
        }
        goto LAB_00a01240;
      }
      iVar14 = iVar14 + 1;
    } while (iVar14 <= *(int *)(gpGlobals + 0x14));
  }
LAB_00a0127c:
  *(undefined4 *)((int)pfVar25 + -4) = 0xa01281;
  iVar14 = TheNextBots();
  uVar12 = (uint)*(ushort *)(iVar14 + 0x10);
  if (uVar12 != 0xffff) {
    iVar19 = *(int *)(iVar14 + 4);
    pfVar21 = pfVar25;
    do {
      piVar20 = *(int **)(iVar19 + uVar12 * 8);
      iVar19 = *piVar20;
      *pfVar21 = (float)piVar20;
                    /* try { // try from 00a01436 to 00a0143b has its CatchHandler @ 00a032eb */
      pcVar7 = *(code **)(iVar19 + 0xb4);
      pfVar21[-1] = 1.4700938e-38;
      local_190 = (CTerrorPlayer *)(*pcVar7)();
      local_17c = 0;
      local_178 = 0;
      if (___atan2f_finite == 0) {
        local_100 = 0;
      }
      else {
        pfVar21[0xb] = (float)"TargetScan()";
        pfVar21[10] = (float)"Unaccounted";
        pfVar21[9] = (float)"(%s)%s";
        pfVar21[8] = (float)&TargetScan<CBaseCombatCharacter>::operator()(CBaseCombatCharacter*)::
                             tm_fmt;
        pfVar21[7] = 6.5861e-44;
        pfVar21[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
        pfVar21[5] = 0.0;
        pfVar21[3] = 0.0;
        pfVar21[4] = 0.0;
        pfVar21[2] = 0.0;
        pfVar21[1] = (float)&local_17c;
        *pfVar21 = (float)___atan2f_finite;
        pcVar7 = *(code **)(___atan2f_finite + 0x50);
        pfVar21[-1] = 1.4700507e-38;
        (*pcVar7)();
        local_100 = ___atan2f_finite;
      }
      iVar19 = _DAT_0105db00;
      local_108 = local_17c;
      local_104 = local_178;
      if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 00a01345 to 00a01349 has its CatchHandler @ 00a0336f */
        pfVar21[-1] = 1.4700599e-38;
        iVar18 = ThreadGetCurrentId();
        if (iVar19 == iVar18) {
          if ((char *)*_DAT_0105d15c != "TargetScan()") {
            pfVar21[4] = 0.0;
            pfVar21[3] = (float)"Unaccounted";
            pfVar21[2] = 1.4013e-45;
            pfVar21[1] = (float)"TargetScan()";
            *pfVar21 = (float)_DAT_0105d15c;
                    /* try { // try from 00a01870 to 00a01881 has its CatchHandler @ 00a0336f */
            pfVar21[-1] = 1.4702453e-38;
            _DAT_0105d15c =
                 (int *)CVProfNode::GetSubNode
                                  ((char *)*pfVar21,(int)pfVar21[1],(char *)pfVar21[2],
                                   (int)pfVar21[3]);
          }
          *pfVar21 = (float)_DAT_0105d15c;
          pfVar21[-1] = 1.4702471e-38;
          CVProfNode::EnterScope();
          DAT_0105d158 = '\0';
        }
      }
      pfVar25 = pfVar21;
      if (local_b0 != local_190) {
        iVar19 = *(int *)local_190;
        *pfVar21 = (float)local_190;
                    /* try { // try from 00a01365 to 00a01389 has its CatchHandler @ 00a033f5 */
        pcVar7 = *(code **)(iVar19 + 300);
        pfVar21[-1] = 1.4700645e-38;
        cVar9 = (*pcVar7)();
        if (cVar9 != '\0') {
          if (local_a0 != -1) {
            *pfVar21 = (float)local_190;
            pfVar21[-1] = 1.4700689e-38;
            iVar19 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar21);
            if (iVar19 != local_a0) goto LAB_00a013a0;
          }
          iVar19 = *(int *)local_190;
          *pfVar21 = (float)local_190;
                    /* try { // try from 00a0189b to 00a01c6a has its CatchHandler @ 00a033f5 */
          pcVar7 = *(code **)(iVar19 + 0x558);
          pfVar21[-1] = 1.4702515e-38;
          cVar9 = (*pcVar7)();
          if (cVar9 == '\0') {
            iVar19 = *(int *)local_b0;
            pfVar21[1] = (float)local_b0;
            *pfVar21 = (float)&local_f0;
            pcVar7 = *(code **)(iVar19 + 0x234);
            pfVar21[-1] = 1.4702564e-38;
            (*pcVar7)();
            local_e0 = local_a8 * local_90 + local_ec;
            local_dc = local_a4 * local_90 + local_e8;
            local_e4 = local_90 * local_ac + local_f0;
            iVar19 = *(int *)local_190;
            pfVar21[-1] = (float)local_190;
            pcVar7 = *(code **)(iVar19 + 0x288);
            pfVar21[-2] = 1.4702715e-38;
            uVar16 = (*pcVar7)();
            pfVar21[3] = 0.0;
            pfVar21[1] = (float)&local_e4;
            pfVar21[2] = (float)&local_d8;
            *pfVar21 = (float)&local_f0;
            pfVar21[-1] = (float)uVar16;
            pfVar21[-2] = 1.4702788e-38;
            CalcClosestPointOnLineSegment
                      ((Vector *)pfVar21[-1],(Vector *)*pfVar21,(Vector *)pfVar21[1],
                       (Vector *)pfVar21[2],(float *)pfVar21[3]);
            pCVar17 = local_190;
            if (((byte)local_190[0x14d] & 8) != 0) {
              pfVar21[-1] = (float)local_190;
              pfVar21[-2] = 1.4702826e-38;
              CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar21[-1]);
            }
            local_f0 = *(float *)(pCVar17 + 0x2e0);
            local_ec = *(float *)(pCVar17 + 0x2e4);
            local_e8 = *(float *)(pCVar17 + 0x2e8);
            iVar19 = *(int *)(local_190 + 0x194);
            pfVar21[-1] = (float)(local_190 + 0x194);
            pcVar7 = *(code **)(iVar19 + 8);
            pfVar21[-2] = 1.470296e-38;
            local_e4 = local_f0;
            local_e0 = local_ec;
            local_dc = local_e8;
            iVar19 = (*pcVar7)();
            fVar29 = *(float *)(iVar19 + 8);
            pfVar21[3] = 0.0;
            pfVar21[2] = (float)&local_fc;
            pfVar21[-1] = (float)&local_d8;
            local_dc = local_dc + fVar29;
            pfVar21[1] = (float)&local_e4;
            *pfVar21 = (float)&local_f0;
            pfVar21[-2] = 1.4703054e-38;
            CalcClosestPointOnLineSegment
                      ((Vector *)pfVar21[-1],(Vector *)*pfVar21,(Vector *)pfVar21[1],
                       (Vector *)pfVar21[2],(float *)pfVar21[3]);
            if (local_8c != '\0') {
              pfVar21[5] = -1.0;
              pfVar21[4] = 1.4013e-45;
              pfVar21[3] = 3.57331e-43;
              pfVar21[2] = 3.57331e-43;
              pfVar21[1] = 3.57331e-43;
              *pfVar21 = 1.0;
              pfVar21[-1] = (float)&local_fc;
              pfVar21[-2] = 1.4703145e-38;
              NDebugOverlay::Cross3D
                        ((Vector *)pfVar21[-1],*pfVar21,(int)pfVar21[1],(int)pfVar21[2],
                         (int)pfVar21[3],*(bool *)(pfVar21 + 4),pfVar21[5]);
              pfVar21[5] = -1.0;
              *pfVar21 = (float)&local_f0;
              pfVar21[4] = 1.4013e-45;
              pfVar21[3] = 0.0;
              pfVar21[2] = 0.0;
              pfVar21[1] = 3.57331e-43;
              pfVar21[-1] = (float)&local_e4;
              pfVar21[-2] = 1.4703235e-38;
              NDebugOverlay::Line((Vector *)pfVar21[-1],(Vector *)*pfVar21,(int)pfVar21[1],
                                  (int)pfVar21[2],(int)pfVar21[3],*(bool *)(pfVar21 + 4),pfVar21[5])
              ;
            }
            iVar19 = *(int *)local_b0;
            *pfVar21 = (float)local_b0;
            pfVar21[-1] = (float)&local_70;
            pcVar7 = *(code **)(iVar19 + 0x234);
            pfVar21[-2] = 1.4703268e-38;
            (*pcVar7)();
            pfVar21[-2] = (float)&local_cc;
            local_cc = local_fc - (float)local_70;
            local_c8 = local_f8 - (float)local_6c;
            local_c4 = local_f4 - local_68;
            pfVar21[-3] = 1.470338e-38;
            VectorNormalize((Vector *)pfVar21[-2]);
            pfVar21[-1] = (float)&local_fc;
            *pfVar21 = (float)&local_c0;
            pfVar21[-2] = (float)(local_b0 + 0x194);
            pfVar21[-3] = 1.470344e-38;
            CCollisionProperty::CalcNearestPoint
                      ((CCollisionProperty *)pfVar21[-2],(Vector *)pfVar21[-1],(Vector *)*pfVar21);
            *pfVar21 = (float)&local_70;
            pfVar21[-1] = (float)&local_c0;
            pfVar21[-2] = (float)(local_190 + 0x194);
            pfVar21[-3] = 1.4703486e-38;
            CCollisionProperty::CalcNearestPoint
                      ((CCollisionProperty *)pfVar21[-2],(Vector *)pfVar21[-1],(Vector *)*pfVar21);
            pfVar25 = pfVar21 + -2;
            if ((SQRT(((float)local_c0 - (float)local_70) * ((float)local_c0 - (float)local_70) +
                      (local_b8 - local_68) * (local_b8 - local_68) +
                      ((float)local_bc - (float)local_6c) * ((float)local_bc - (float)local_6c)) <=
                 local_94) &&
               (fVar29 = local_c4 * local_a4 + local_cc * local_ac + local_c8 * local_a8,
               pfVar25 = pfVar21 + -2, local_9c < fVar29)) {
              *pfVar21 = 1.4013e-45;
              pfVar21[-1] = (float)local_190;
              pfVar21[-2] = (float)local_b0;
              pfVar21[-3] = 1.4703772e-38;
              cVar9 = CBaseCombatCharacter::IsAbleToSee();
              pfVar25 = pfVar21 + -2;
              if (cVar9 != '\0') {
                if (local_98 <= fVar29) {
                  local_98 = fVar29;
                  local_88 = local_190;
                }
                *pfVar21 = (float)&local_190;
                pfVar21[-1] = local_78;
                pfVar21[-2] = (float)&local_84;
                pfVar21[-3] = 1.4703874e-38;
                CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
                InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
                              *)pfVar21[-2],(int)pfVar21[-1],(CBaseCombatCharacter **)*pfVar21);
                pfVar25 = pfVar21 + -2;
              }
            }
          }
        }
      }
LAB_00a013a0:
      iVar19 = _DAT_0105db00;
      if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
        pfVar25[-1] = 1.4700762e-38;
        iVar18 = ThreadGetCurrentId();
        if (iVar19 == iVar18) {
          *pfVar25 = (float)_DAT_0105d15c;
          pfVar25[-1] = 1.470233e-38;
          cVar9 = CVProfNode::ExitScope();
          if (cVar9 != '\0') {
            _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
          }
          DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
        }
      }
      if (local_100 != 0) {
        pfVar25[5] = 0.0;
        pfVar25[4] = 0.0;
        pfVar25[3] = 0.0;
        *pfVar25 = (float)local_100;
        pfVar25[1] = (float)local_108;
        pfVar25[2] = (float)local_104;
        pcVar7 = *(code **)(local_100 + 0x54);
        pfVar25[-1] = 1.4700857e-38;
        (*pcVar7)();
      }
      iVar19 = *(int *)(iVar14 + 4);
      uVar12 = (uint)*(ushort *)(iVar19 + 6 + uVar12 * 8);
      pfVar21 = pfVar25;
    } while (uVar12 != 0xffff);
  }
  if (0 < (int)local_78) {
    iVar14 = 0;
    do {
      piVar20 = *(int **)(local_84 + iVar14 * 4);
      iVar19 = *piVar20;
      *pfVar25 = (float)piVar20;
                    /* try { // try from 00a01503 to 00a0174a has its CatchHandler @ 00a032eb */
      pcVar7 = *(code **)(iVar19 + 0x16c);
      pfVar25[-1] = 1.4701225e-38;
      cVar9 = (*pcVar7)();
      if (cVar9 != '\0') {
LAB_00a01533:
        CVar24 = (CTerrorPlayer)0x1;
        goto LAB_00a01538;
      }
      iVar19 = *piVar20;
      *pfVar25 = (float)piVar20;
      pcVar7 = *(code **)(iVar19 + 0x14c);
      pfVar25[-1] = 1.4701246e-38;
      piVar20 = (int *)(*pcVar7)();
      if (piVar20 != (int *)0x0) {
        *pfVar25 = (float)piVar20;
        pfVar25[-1] = 1.4701272e-38;
        iVar19 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar25);
        if (iVar19 == 3) {
          iVar19 = *piVar20;
          *pfVar25 = (float)piVar20;
                    /* try { // try from 00a01c85 to 00a01ca9 has its CatchHandler @ 00a032eb */
          pcVar7 = *(code **)(iVar19 + 0x544);
          pfVar25[-1] = 1.4703919e-38;
          iVar19 = (*pcVar7)();
          if (iVar19 != 7) {
            iVar19 = *piVar20;
            *pfVar25 = (float)piVar20;
            pcVar7 = *(code **)(iVar19 + 0x594);
            pfVar25[-1] = 1.4703947e-38;
            piVar20 = (int *)(*pcVar7)();
            iVar19 = *piVar20;
            *pfVar25 = (float)piVar20;
            pcVar7 = *(code **)(iVar19 + 0x110);
            pfVar25[-1] = 1.4703962e-38;
            iVar19 = (*pcVar7)();
            if (iVar19 == 0) goto LAB_00a01cb2;
          }
        }
        goto LAB_00a01533;
      }
LAB_00a01cb2:
      iVar14 = iVar14 + 1;
    } while (iVar14 < (int)local_78);
  }
  CVar24 = (CTerrorPlayer)0x0;
LAB_00a01538:
  if (CVar24 != this[0x3148]) {
    if (this[0x6c] == (CTerrorPlayer)0x0) {
      puVar8 = *(uint **)(this + 0x30);
      if (puVar8 != (uint *)0x0) {
        *puVar8 = *puVar8 | 0x101;
        *pfVar25 = (float)puVar8;
        pfVar25[-1] = 1.4701346e-38;
        iVar14 = CBaseEdict::GetChangeAccessor((CBaseEdict *)*pfVar25);
        *(undefined2 *)(iVar14 + 2) = 0;
      }
    }
    else {
      this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
    }
    this[0x3148] = CVar24;
  }
  if (local_88 == (CTerrorPlayer *)0x0) {
    *pfVar25 = (float)this;
                    /* try { // try from 00a02244 to 00a02248 has its CatchHandler @ 00a032eb */
    pfVar25[-1] = 1.4705979e-38;
    iVar14 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar25);
    if (iVar14 == 3) {
      iVar14 = *(int *)this;
      *pfVar25 = (float)this;
                    /* try { // try from 00a02c2d to 00a02c32 has its CatchHandler @ 00a032eb */
      pcVar7 = *(code **)(iVar14 + 0x544);
      pfVar25[-1] = 1.4709535e-38;
      iVar14 = (*pcVar7)();
      if (iVar14 == 8) {
        iVar14 = *(int *)this;
        local_70 = (CTerrorPlayer *)&PTR_operator___00c22340;
        local_40 = 0.0;
        local_3c = 0;
        local_38 = 0.0;
        local_34 = 0.0;
        local_30 = 0.0;
        local_6c = this;
        *pfVar25 = (float)this;
                    /* try { // try from 00a02c6e to 00a02c82 has its CatchHandler @ 00a0336b */
        pcVar7 = *(code **)(iVar14 + 0x238);
        pfVar25[-1] = 1.4709626e-38;
        uVar16 = (*pcVar7)();
        *pfVar25 = (float)uVar16;
        pfVar25[1] = (float)&local_68;
        pfVar25[-1] = 1.4709647e-38;
        AngleVectors((QAngle *)*pfVar25,(Vector *)pfVar25[1]);
        local_58 = 0xbf800000;
        local_54 = 0xbf800000;
        local_50 = 0x461c4000;
        local_44 = (int *)0x0;
        local_5c = iVar11;
        *pfVar25 = (float)&local_70;
        local_4c = 0x42480000;
        local_48 = (CTerrorPlayer *)((uint)local_48 & 0xffffff00);
                    /* try { // try from 00a02cb9 to 00a02dcf has its CatchHandler @ 00a03340 */
        pfVar25[-1] = 1.470973e-38;
        ForEachTerrorPlayer<TargetScan<CTerrorPlayer>>((TargetScan *)*pfVar25);
        if (local_44 != (int *)0x0) {
          *pfVar25 = (float)(this + 0x3124);
          pfVar25[-1] = 1.4709765e-38;
          lVar28 = (longdouble)IntervalTimer::Now();
          if ((float)lVar28 != *(float *)(this + 0x3128)) {
            iVar11 = *(int *)(this + 0x3124);
            *pfVar25 = (float)(this + 0x3124);
            pfVar25[1] = (float)(this + 0x3128);
                    /* try { // try from 00a032cf to 00a032d1 has its CatchHandler @ 00a03340 */
            pcVar7 = *(code **)(iVar11 + 4);
            pfVar25[-1] = 1.471191e-38;
            (*pcVar7)();
            *(float *)(this + 0x3128) = (float)lVar28;
          }
          iVar11 = *(int *)this;
          *(undefined4 *)(this + 0x312c) = local_54;
          *pfVar25 = (float)this;
          pcVar7 = *(code **)(iVar11 + 0x288);
          pfVar25[-1] = 1.4709839e-38;
          pfVar21 = (float *)(*pcVar7)();
          iVar11 = *local_44;
          *pfVar25 = (float)local_44;
          pcVar7 = *(code **)(iVar11 + 0x288);
          pfVar25[-1] = 1.4709862e-38;
          pfVar22 = (float *)(*pcVar7)();
          fVar29 = *pfVar22;
          fVar1 = pfVar22[2];
          fVar2 = *pfVar21;
          fVar3 = pfVar21[2];
          fVar4 = pfVar22[1];
          fVar5 = pfVar21[1];
          *(undefined4 *)(this + 0x3140) = 0;
          *(float *)(this + 0x3130) =
               SQRT((fVar29 - fVar2) * (fVar29 - fVar2) + (fVar1 - fVar3) * (fVar1 - fVar3) +
                    (fVar4 - fVar5) * (fVar4 - fVar5));
          if (0 < (int)local_34) {
            iVar11 = 0;
            do {
              piVar20 = *(int **)((int)local_40 + iVar11 * 4);
              local_c0 = (undefined **)0xffffffff;
              if (piVar20 != (int *)0x0) {
                iVar14 = *piVar20;
                *pfVar25 = (float)piVar20;
                pcVar7 = *(code **)(iVar14 + 0xc);
                pfVar25[-1] = 1.4710063e-38;
                pfVar21 = (float *)(*pcVar7)();
                local_c0 = (undefined **)*pfVar21;
              }
              pfVar25[2] = (float)&local_c0;
              pfVar25[1] = *(float *)(this + 0x3140);
              *pfVar25 = (float)(this + 0x3134);
              pfVar25[-1] = 1.4710114e-38;
              CUtlVector<CHandle<CBaseCombatCharacter>,CUtlMemory<CHandle<CBaseCombatCharacter>,int>>
              ::InsertBefore((CUtlVector<CHandle<CBaseCombatCharacter>,CUtlMemory<CHandle<CBaseCombatCharacter>,int>>
                              *)*pfVar25,(int)pfVar25[1],(CHandle *)pfVar25[2]);
              iVar11 = iVar11 + 1;
            } while (iVar11 < (int)local_34);
          }
        }
        local_70 = (CTerrorPlayer *)&PTR_operator___00c22340;
        *pfVar25 = (float)&local_40;
        local_34 = 0.0;
        pfVar25[-1] = 1.471016e-38;
        CUtlMemory<CTerrorPlayer*,int>::Purge((CUtlMemory<CTerrorPlayer*,int> *)*pfVar25);
        fVar29 = local_40;
        *pfVar25 = (float)&local_40;
        local_30 = fVar29;
        pfVar25[-1] = 1.471018e-38;
        CUtlMemory<CTerrorPlayer*,int>::Purge((CUtlMemory<CTerrorPlayer*,int> *)*pfVar25);
        goto LAB_00a0174b;
      }
    }
    *(undefined4 *)(this + 0x3140) = 0;
  }
  else {
    *pfVar25 = (float)(this + 0x311c);
    pfVar25[-1] = 1.4701402e-38;
    lVar28 = (longdouble)IntervalTimer::Now();
    if ((float)lVar28 != *(float *)(this + 0x3120)) {
      iVar11 = *(int *)(this + 0x311c);
      *pfVar25 = (float)(this + 0x311c);
      pfVar25[1] = (float)(this + 0x3120);
      pcVar7 = *(code **)(iVar11 + 4);
      pfVar25[-1] = 1.4705145e-38;
      (*pcVar7)();
      *(float *)(this + 0x3120) = (float)lVar28;
    }
    *pfVar25 = (float)(this + 0x3124);
    pfVar25[-1] = 1.4701462e-38;
    lVar28 = (longdouble)IntervalTimer::Now();
    if ((float)lVar28 != *(float *)(this + 0x3128)) {
      iVar11 = *(int *)(this + 0x3124);
      *pfVar25 = (float)(this + 0x3124);
      pfVar25[1] = (float)(this + 0x3128);
                    /* try { // try from 00a01fcb to 00a01ff5 has its CatchHandler @ 00a032eb */
      pcVar7 = *(code **)(iVar11 + 4);
      pfVar25[-1] = 1.4705089e-38;
      (*pcVar7)();
      *(float *)(this + 0x3128) = (float)lVar28;
    }
    iVar11 = *(int *)this;
    *(float *)(this + 0x312c) = local_98;
    *pfVar25 = (float)this;
    pcVar7 = *(code **)(iVar11 + 0x288);
    pfVar25[-1] = 1.470154e-38;
    pfVar21 = (float *)(*pcVar7)();
    iVar11 = *(int *)local_88;
    *pfVar25 = (float)local_88;
    pcVar7 = *(code **)(iVar11 + 0x288);
    pfVar25[-1] = 1.4701567e-38;
    pfVar22 = (float *)(*pcVar7)();
    fVar29 = *pfVar22;
    fVar1 = pfVar22[2];
    fVar2 = *pfVar21;
    fVar3 = pfVar21[2];
    fVar4 = pfVar22[1];
    fVar5 = pfVar21[1];
    iVar11 = 0;
    *(undefined4 *)(this + 0x3140) = 0;
    *(float *)(this + 0x3130) =
         SQRT((fVar29 - fVar2) * (fVar29 - fVar2) + (fVar1 - fVar3) * (fVar1 - fVar3) +
              (fVar4 - fVar5) * (fVar4 - fVar5));
    if (0 < (int)local_78) {
      do {
        piVar20 = *(int **)(local_84 + iVar11 * 4);
        local_70 = (CTerrorPlayer *)&DAT_ffffffff;
        if (piVar20 != (int *)0x0) {
          iVar14 = *piVar20;
          *pfVar25 = (float)piVar20;
          pcVar7 = *(code **)(iVar14 + 0xc);
          pfVar25[-1] = 1.4701763e-38;
          puVar23 = (undefined4 *)(*pcVar7)();
          local_70 = (CTerrorPlayer *)*puVar23;
        }
        pfVar25[2] = (float)&local_70;
        pfVar25[1] = *(float *)(this + 0x3140);
        *pfVar25 = (float)(this + 0x3134);
        pfVar25[-1] = 1.470181e-38;
        CUtlVector<CHandle<CBaseCombatCharacter>,CUtlMemory<CHandle<CBaseCombatCharacter>,int>>::
        InsertBefore((CUtlVector<CHandle<CBaseCombatCharacter>,CUtlMemory<CHandle<CBaseCombatCharacter>,int>>
                      *)*pfVar25,(int)pfVar25[1],(CHandle *)pfVar25[2]);
        iVar11 = iVar11 + 1;
      } while (iVar11 < (int)local_78);
    }
    *pfVar25 = (float)this;
    pfVar25[-1] = 1.4701832e-38;
    iVar11 = GetActiveTerrorWeapon((CTerrorPlayer *)*pfVar25);
    if (iVar11 != 0) {
      if (((byte)this[0x14d] & 8) == 0) {
        CVar24 = local_88[0x14d];
        pCVar17 = local_88;
      }
      else {
        *pfVar25 = (float)this;
                    /* try { // try from 00a021a3 to 00a021c2 has its CatchHandler @ 00a032eb */
        pfVar25[-1] = 1.4705753e-38;
        CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*pfVar25);
        CVar24 = local_88[0x14d];
        pCVar17 = local_88;
      }
      local_88 = pCVar17;
      if (((byte)CVar24 & 8) != 0) {
        *pfVar25 = (float)pCVar17;
        pfVar25[-1] = 1.4705791e-38;
        CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*pfVar25);
      }
      if ((*(float *)(pCVar17 + 0x2e4) - *(float *)(this + 0x2e4)) *
          (*(float *)(pCVar17 + 0x2e4) - *(float *)(this + 0x2e4)) +
          (*(float *)(pCVar17 + 0x2e0) - *(float *)(this + 0x2e0)) *
          (*(float *)(pCVar17 + 0x2e0) - *(float *)(this + 0x2e0)) +
          (*(float *)(pCVar17 + 0x2e8) - *(float *)(this + 0x2e8)) *
          (*(float *)(pCVar17 + 0x2e8) - *(float *)(this + 0x2e8)) < 1048576.0) {
        *pfVar25 = (float)this;
        pfVar25[-1] = 1.4702013e-38;
        uVar16 = GetActiveTerrorWeapon((CTerrorPlayer *)*pfVar25);
        pfVar25[1] = 0.0;
        *pfVar25 = (float)uVar16;
        pfVar25[-1] = 1.4702035e-38;
        CTerrorWeapon::SuppressHelpingHands((CTerrorWeapon *)*pfVar25,pfVar25[1]);
      }
    }
  }
LAB_00a0174b:
  local_78 = 0.0;
  *pfVar25 = (float)&local_84;
  local_b4 = &PTR_operator___00c53020;
  pfVar25[-1] = 1.4702075e-38;
  CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*pfVar25);
  local_74 = local_84;
  *pfVar25 = (float)&local_84;
  pfVar25[-1] = 1.4702098e-38;
  CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*pfVar25);
LAB_00a01778:
  iVar11 = _DAT_0105db00;
  if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
    pfVar25[-1] = 1.4702237e-38;
    iVar14 = ThreadGetCurrentId();
    if (iVar11 == iVar14) {
      *pfVar25 = (float)_DAT_0105d15c;
      pfVar25[-1] = 1.4702261e-38;
      cVar9 = CVProfNode::ExitScope();
      if (cVar9 != '\0') {
        _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
      }
      DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
    }
  }
  iVar14 = local_160;
  iVar11 = local_168;
  if (local_160 != 0) {
    pfVar25[5] = 0.0;
    iVar19 = local_164;
    pfVar25[4] = 0.0;
    pfVar25[3] = 0.0;
    *pfVar25 = (float)iVar14;
    pfVar25[1] = (float)iVar11;
    pfVar25[2] = (float)iVar19;
    pcVar7 = *(code **)(iVar14 + 0x54);
    pfVar25[-1] = 1.4702208e-38;
    (*pcVar7)();
  }
  return;
LAB_00a0109a:
  pfVar25 = (float *)((int)piVar20 + -8);
  pCVar17 = this + 0x2ef0;
  fVar29 = *(float *)(this + 0x2ef8);
  *(CTerrorPlayer **)((int)piVar20 + -8) = pCVar17;
  *(undefined4 *)((int)piVar20 + -0xc) = 0xa010ae;
  lVar28 = (longdouble)CountdownTimer::Now();
  if (fVar29 - (float)lVar28 < 0.5) {
    *(CTerrorPlayer **)((int)piVar20 + -8) = pCVar17;
                    /* try { // try from 00a02665 to 00a026c3 has its CatchHandler @ 00a033e2 */
    *(undefined4 *)((int)piVar20 + -0xc) = 0xa0266a;
    lVar28 = (longdouble)CountdownTimer::Now();
    if ((float)lVar28 + 0.5 != *(float *)(this + 0x2ef8)) {
      iVar11 = *(int *)(this + 0x2ef0);
      *(CTerrorPlayer **)((int)piVar20 + -8) = pCVar17;
      *(CTerrorPlayer **)((int)piVar20 + -4) = this + 0x2ef8;
                    /* try { // try from 00a02e17 to 00a02e19 has its CatchHandler @ 00a033e2 */
      pcVar7 = *(code **)(iVar11 + 4);
      *(undefined4 *)((int)piVar20 + -0xc) = 0xa02e1a;
      (*pcVar7)();
      *(float *)(this + 0x2ef8) = (float)lVar28 + 0.5;
    }
    pfVar25 = (float *)((int)piVar20 + -8);
    if (*(float *)(this + 0x2ef4) != 0.5) {
      iVar11 = *(int *)(this + 0x2ef0);
      *(CTerrorPlayer **)((int)piVar20 + -8) = pCVar17;
      *(CTerrorPlayer **)((int)piVar20 + -4) = this + 0x2ef4;
      pcVar7 = *(code **)(iVar11 + 4);
      *(undefined4 *)((int)piVar20 + -0xc) = 0xa026c4;
      (*pcVar7)();
      *(undefined4 *)(this + 0x2ef4) = 0x3f000000;
      pfVar25 = (float *)((int)piVar20 + -8);
    }
  }
  goto LAB_00a010d8;
}

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)