L L4D2node

Vocalizer::Update

0x00a09ba0 · 6950 bytes · __thiscall

_ZN9Vocalizer6UpdateEv

Decompiled

undefined (1 param)

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

void __thiscall Vocalizer::Update(Vocalizer *this)

{
  Vocalizer *pVVar1;
  float fVar2;
  float fVar3;
  code *pcVar4;
  CBaseEntity *this_00;
  int *piVar5;
  int *piVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  QAngle *pQVar10;
  CBaseCombatCharacter *pCVar11;
  Checkpoint *this_01;
  uint *puVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  undefined4 *puVar16;
  undefined4 uVar17;
  int *piVar18;
  undefined *puVar19;
  undefined *puVar20;
  CBaseEntity *this_02;
  char *pcVar21;
  int *piVar22;
  float *pfVar23;
  float *pfVar24;
  int in_GS_OFFSET;
  longdouble lVar25;
  float fVar26;
  float afStack_288 [3];
  float local_26c [10];
  int local_244;
  CBaseEntity *local_240;
  int *local_230;
  int local_22c;
  int local_228;
  int local_224;
  int local_220;
  int local_21c;
  int local_218;
  int local_214;
  float local_210;
  float local_20c;
  float local_208;
  int local_204;
  int local_200;
  int 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;
  undefined1 local_1d4 [12];
  float local_1c8;
  float local_1c4;
  float local_1c0;
  float local_1bc;
  int *local_1b8;
  float local_1b4;
  undefined4 local_1b0;
  char local_1ac;
  undefined **local_1a8;
  int *local_1a4;
  float local_1a0;
  float local_19c;
  float local_198;
  int local_194;
  float local_190;
  float local_18c;
  float local_188;
  float local_184;
  char local_180;
  int *local_17c;
  undefined4 local_178;
  undefined4 local_174;
  undefined4 local_170;
  float local_16c;
  undefined4 local_168;
  undefined **local_164;
  int *local_160;
  float local_15c [3];
  undefined4 local_150;
  float local_14c;
  float local_148;
  undefined4 local_144;
  undefined4 local_140;
  undefined1 local_13c;
  int *local_138;
  undefined4 local_134;
  undefined4 local_130;
  undefined4 local_12c;
  undefined4 local_128;
  undefined4 local_124;
  char local_120 [5];
  undefined1 local_11b [251];
  int local_20;
  
  piVar18 = (int *)&stack0xfffffd84;
  local_22c = 0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_228 = 0;
  if (___atan2f_finite == 0) {
    local_214 = 0;
  }
  else {
    (**(code **)(___atan2f_finite + 0x50))();
    local_214 = ___atan2f_finite;
  }
  iVar9 = _DAT_0105db00;
  local_21c = local_22c;
  local_218 = local_228;
                    /* try { // try from 00a09d06 to 00a09d54 has its CatchHandler @ 00a0b7d2 */
  if (((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) &&
     (iVar8 = ThreadGetCurrentId(), iVar9 == iVar8)) {
    if ((char *)*_DAT_0105d15c != "Vocalizer::Update") {
      _DAT_0105d15c =
           (int *)CVProfNode::GetSubNode((char *)_DAT_0105d15c,0xd1fb5f,(char *)0x1,0xbfafa1);
    }
    CVProfNode::EnterScope();
    DAT_0105d158 = '\0';
  }
                    /* try { // try from 00a09c81 to 00a09c86 has its CatchHandler @ 00a0b7d6 */
  cVar7 = (**(code **)(**(int **)this + 300))();
  piVar22 = (int *)&stack0xfffffd84;
  if (cVar7 != '\0') {
                    /* try { // try from 00a09dc5 to 00a0a06b has its CatchHandler @ 00a0b7d6 */
    iVar9 = CBaseEntity::GetTeamNumber(*(CBaseEntity **)this);
    cVar7 = IsASurvivorTeam(iVar9);
    piVar22 = (int *)&stack0xfffffd84;
    if (cVar7 != '\0') {
      uVar13 = *(uint *)(this + 0xf4);
      if (uVar13 == 0xffffffff) {
        uVar13 = 0xffffffff;
LAB_00a09e0d:
        this_02 = (CBaseEntity *)0x0;
LAB_00a09e0f:
        local_240 = (CBaseEntity *)0x0;
      }
      else {
        puVar19 = g_pEntityList + (uVar13 & 0xfff) * 0x10;
        if ((puVar19 == (undefined *)0xfffffffc) || (*(uint *)(puVar19 + 8) != uVar13 >> 0xc))
        goto LAB_00a09e0d;
        this_02 = *(CBaseEntity **)(puVar19 + 4);
        if (this_02 == (CBaseEntity *)0x0) goto LAB_00a09e0f;
        cVar7 = (**(code **)(*(int *)this_02 + 0x16c))();
        uVar13 = *(uint *)(this + 0xf4);
        local_240 = this_02;
        if (cVar7 == '\0') goto LAB_00a09e0f;
      }
      puVar19 = g_pEntityList;
      if (((uVar13 == 0xffffffff) ||
          (puVar20 = g_pEntityList + (uVar13 & 0xfff) * 0x10, puVar20 == (undefined *)0xfffffffc))
         || ((*(uint *)(puVar20 + 8) != uVar13 >> 0xc || (*(int *)(puVar20 + 4) == 0)))) {
        lVar25 = (longdouble)IntervalTimer::Now();
        puVar19 = g_pEntityList;
        if ((float)lVar25 != *(float *)(this + 0x100)) {
          (**(code **)(*(int *)(this + 0xfc) + 4))();
          *(float *)(this + 0x100) = (float)lVar25;
          puVar19 = g_pEntityList;
        }
      }
      else {
        *(undefined4 *)(this + 0xf4) = 0xffffffff;
      }
      uVar13 = *(uint *)(this + 0xf8);
      if (((uVar13 == 0xffffffff) ||
          (puVar19 = puVar19 + (uVar13 & 0xfff) * 0x10, puVar19 == (undefined *)0xfffffffc)) ||
         (*(uint *)(puVar19 + 8) != uVar13 >> 0xc)) {
        iVar9 = 0;
LAB_00a09ee2:
        lVar25 = (longdouble)IntervalTimer::Now();
        if ((float)lVar25 != *(float *)(this + 0x108)) {
          (**(code **)(*(int *)(this + 0x104) + 4))();
          *(float *)(this + 0x108) = (float)lVar25;
        }
      }
      else {
        iVar9 = *(int *)(puVar19 + 4);
        if (iVar9 == 0) goto LAB_00a09ee2;
        *(undefined4 *)(this + 0xf8) = 0xffffffff;
      }
                    /* try { // try from 00a0a277 to 00a0a7db has its CatchHandler @ 00a0b7d6 */
      if (((this_02 != (CBaseEntity *)0x0) && (*(char *)(*(int *)this + 0x2edc) == '\0')) &&
         (((*(uint *)(*(int *)this + 0x1cb0) & 0x618) != 0 &&
          (lVar25 = (longdouble)CountdownTimer::Now(), *(float *)(this + 0x114) <= (float)lVar25))))
      {
        this_00 = *(CBaseEntity **)this;
        if (((byte)this_00[0x14d] & 0x10) != 0) {
          CBaseEntity::CalcAbsoluteVelocity(this_00);
        }
        if ((SQRT(*(float *)(this_00 + 0x27c) * *(float *)(this_00 + 0x27c) +
                  *(float *)(this_00 + 0x274) * *(float *)(this_00 + 0x274) +
                  *(float *)(this_00 + 0x278) * *(float *)(this_00 + 0x278)) < 30.0) &&
           (((*(float *)(this + 0x100) <= 0.0 ||
             (lVar25 = (longdouble)IntervalTimer::Now(),
             0.5 < (float)lVar25 - *(float *)(this + 0x100))) || (iVar9 != 0)))) {
          if (local_240 == (CBaseEntity *)0x0) {
            if (((*(float *)(this + 0x100) <= 0.0) ||
                (lVar25 = (longdouble)IntervalTimer::Now(), piVar22 = (int *)&stack0xfffffd84,
                1.0 < (float)lVar25 - *(float *)(this + 0x100))) &&
               (this_01 = (Checkpoint *)TerrorNavMesh::GetInitialCheckpoint(TheNavMesh),
               piVar22 = (int *)&stack0xfffffd84, this_01 != (Checkpoint *)0x0)) {
              Checkpoint::GetSpawnPosition
                        (this_01,(Vector *)&local_1a8,(QAngle *)&local_164,(TerrorNavArea **)0x0);
              local_164 = (undefined **)0x0;
              local_15c[0] = 0.0;
              CBaseEntity::SetAbsOrigin(this_02,(Vector *)&local_1a8);
              CBaseEntity::SetAbsAngles(this_02,(QAngle *)&local_164);
              piVar22 = (int *)&stack0xfffffd84;
            }
          }
          else {
            cVar7 = Say();
            if (cVar7 == '\0') goto LAB_00a09f70;
            fVar26 = *(float *)(MakeWayInterval._28_4_ + 0x2c);
            lVar25 = (longdouble)CountdownTimer::Now();
            if ((float)lVar25 + fVar26 != *(float *)(this + 0x114)) {
              (**(code **)(*(int *)(this + 0x10c) + 4))();
              *(float *)(this + 0x114) = (float)lVar25 + fVar26;
            }
            if (fVar26 != *(float *)(this + 0x110)) {
                    /* try { // try from 00a0aed8 to 00a0af26 has its CatchHandler @ 00a0b7d6 */
              (**(code **)(*(int *)(this + 0x10c) + 4))();
              *(float *)(this + 0x110) = fVar26;
            }
            piVar18 = (int *)(**(code **)(*gameeventmanager + 0x1c))();
            piVar22 = (int *)&stack0xfffffd84;
            if (piVar18 != (int *)0x0) {
              pcVar4 = *(code **)(*piVar18 + 0x30);
              (**(code **)(*engine + 0x40))();
              (*pcVar4)();
              pcVar4 = *(code **)(*piVar18 + 0x30);
              (**(code **)(*engine + 0x40))();
              (*pcVar4)();
              (**(code **)(*gameeventmanager + 0x20))();
              piVar22 = (int *)&stack0xfffffd84;
            }
          }
          goto LAB_00a09c8f;
        }
      }
LAB_00a09f70:
      lVar25 = (longdouble)CountdownTimer::Now();
      piVar22 = (int *)&stack0xfffffd84;
      if (((*(float *)(this + 0x20) <= (float)lVar25) &&
          (iVar9 = *(int *)this, piVar22 = (int *)&stack0xfffffd84,
          *(char *)(iVar9 + 0x2edc) == '\0')) &&
         ((((uVar13 = *(uint *)(iVar9 + 0x3e68), uVar13 == 0xffffffff ||
            ((puVar19 = g_pEntityList + (uVar13 & 0xfff) * 0x10, puVar19 == (undefined *)0xfffffffc
             || (*(uint *)(puVar19 + 8) != uVar13 >> 0xc)))) ||
           (piVar22 = (int *)&stack0xfffffd84, *(int *)(puVar19 + 4) == 0)) &&
          ((((uVar13 = *(uint *)(iVar9 + 0x33c4), uVar13 == 0xffffffff ||
             (puVar19 = g_pEntityList + (uVar13 & 0xfff) * 0x10, puVar19 == (undefined *)0xfffffffc)
             ) || (*(uint *)(puVar19 + 8) != uVar13 >> 0xc)) ||
           (piVar22 = (int *)&stack0xfffffd84, *(int *)(puVar19 + 4) == 0)))))) {
        lVar25 = (longdouble)CountdownTimer::Now();
        if ((float)lVar25 + 0.2 != *(float *)(this + 0x20)) {
          (**(code **)(*(int *)(this + 0x18) + 4))();
          *(float *)(this + 0x20) = (float)lVar25 + 0.2;
        }
        if (*(float *)(this + 0x1c) != 0.2) {
          (**(code **)(*(int *)(this + 0x18) + 4))();
          *(undefined4 *)(this + 0x1c) = 0x3e4ccccd;
        }
        CBasePlayer::EyeVectors
                  (*(CBasePlayer **)this,(Vector *)&local_210,(Vector *)0x0,(Vector *)0x0);
        *(undefined4 *)(this + 0x118) = 0xffffffff;
        *(undefined4 *)(this + 0x11c) = 0xffffffff;
        fVar26 = *(float *)(this + 8);
        fVar2 = *(float *)(this + 4);
        *(float *)(this + 8) = local_20c;
        *(float *)(this + 4) = local_210;
        fVar3 = *(float *)(this + 0xc);
        *(float *)(this + 0xc) = local_208;
        if (fVar26 * local_20c + fVar2 * local_210 + fVar3 * local_208 <=
            1.0 - *(float *)(ViewMotionThreshold._28_4_ + 0x2c)) {
          lVar25 = (longdouble)IntervalTimer::Now();
          piVar22 = (int *)&stack0xfffffd84;
          if ((float)lVar25 != *(float *)(this + 0x14)) {
            (**(code **)(*(int *)(this + 0x10) + 4))();
            *(float *)(this + 0x14) = (float)lVar25;
            piVar22 = (int *)&stack0xfffffd84;
          }
        }
        else {
          if ((0.0 < *(float *)(this + 0x14)) &&
             (lVar25 = (longdouble)IntervalTimer::Now(), piVar22 = (int *)&stack0xfffffd84,
             (float)lVar25 - *(float *)(this + 0x14) < 0.2)) goto LAB_00a09c8f;
          fVar2 = *(float *)(MaxWarnRange._28_4_ + 0x2c);
          fVar26 = *(float *)(AimTolerance._28_4_ + 0x2c);
          local_1a8 = &PTR_operator___00c53020;
          local_178 = 0;
          local_1a4 = *(int **)this;
          local_174 = 0;
          local_170 = 0;
          local_16c = 0.0;
          local_168 = 0;
                    /* try { // try from 00a0a155 to 00a0a16c has its CatchHandler @ 00a0b793 */
          pQVar10 = (QAngle *)(**(code **)(*local_1a4 + 0x238))();
          AngleVectors(pQVar10,(Vector *)&local_1a0);
          iVar9 = 1;
          local_194 = 3;
          local_190 = 1.0 - fVar26;
          local_17c = (int *)0x0;
          local_184 = 50.0;
          local_180 = '\0';
          local_18c = local_190;
          local_188 = fVar2;
          if (0 < *(int *)(gpGlobals + 0x14)) {
            do {
              pCVar11 = (CBaseCombatCharacter *)UTIL_PlayerByIndex(iVar9);
                    /* try { // try from 00a0a1e1 to 00a0a23c has its CatchHandler @ 00a0b7c6 */
                    /* try { // try from 00a0af48 to 00a0afb4 has its CatchHandler @ 00a0b7c6 */
              if ((((pCVar11 != (CBaseCombatCharacter *)0x0) && (*(int *)(pCVar11 + 0x30) != 0)) &&
                  ((*(int *)(pCVar11 + 0x30) - *(int *)(gpGlobals + 0x58) >> 4 != 0 &&
                   (((cVar7 = (**(code **)(*(int *)pCVar11 + 0x16c))(), cVar7 != '\0' &&
                     (*(int *)(pCVar11 + 0x1f6c) != 2)) &&
                    (iVar8 = (**(code **)(*(int *)pCVar11 + 0x148))(), iVar8 == 0)))))) &&
                 (cVar7 = TargetScan<CBaseCombatCharacter>::operator()
                                    ((TargetScan<CBaseCombatCharacter> *)&local_1a8,pCVar11),
                 cVar7 == '\0')) goto LAB_00a0af61;
              iVar9 = iVar9 + 1;
            } while (iVar9 <= *(int *)(gpGlobals + 0x14));
          }
                    /* try { // try from 00a0a85a to 00a0a8ef has its CatchHandler @ 00a0b7c6 */
          iVar9 = TheNextBots();
          uVar13 = (uint)*(ushort *)(iVar9 + 0x10);
          piVar18 = (int *)&stack0xfffffd84;
          if (uVar13 != 0xffff) {
            iVar8 = *(int *)(iVar9 + 4);
            pfVar24 = (float *)&stack0xfffffd84;
            do {
              piVar18 = *(int **)(iVar8 + uVar13 * 8);
              iVar8 = *piVar18;
              *pfVar24 = (float)piVar18;
                    /* try { // try from 00a0aa15 to 00a0aa1a has its CatchHandler @ 00a0b7c6 */
              pcVar4 = *(code **)(iVar8 + 0xb4);
              pfVar24[-1] = 1.4754702e-38;
              local_230 = (int *)(*pcVar4)();
              local_224 = 0;
              local_220 = 0;
              if (___atan2f_finite == 0) {
                local_1fc = 0;
              }
              else {
                pfVar24[0xb] = (float)"TargetScan()";
                pfVar24[10] = (float)"Unaccounted";
                pfVar24[9] = (float)"(%s)%s";
                pfVar24[8] = (float)&TargetScan<CBaseCombatCharacter>::
                                     operator()(CBaseCombatCharacter*)::tm_fmt;
                pfVar24[7] = 6.5861e-44;
                pfVar24[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
                pfVar24[5] = 0.0;
                pfVar24[3] = 0.0;
                pfVar24[4] = 0.0;
                pfVar24[2] = 0.0;
                pfVar24[1] = (float)&local_224;
                *pfVar24 = (float)___atan2f_finite;
                pcVar4 = *(code **)(___atan2f_finite + 0x50);
                pfVar24[-1] = 1.4754283e-38;
                (*pcVar4)();
                local_1fc = ___atan2f_finite;
              }
              iVar8 = _DAT_0105db00;
              local_204 = local_224;
              local_200 = local_220;
              if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
                    /* try { // try from 00a0a92c to 00a0a930 has its CatchHandler @ 00a0b7cd */
                pfVar24[-1] = 1.4754374e-38;
                iVar14 = ThreadGetCurrentId();
                if (iVar8 == iVar14) {
                  if ((char *)*_DAT_0105d15c != "TargetScan()") {
                    pfVar24[4] = 0.0;
                    pfVar24[3] = (float)"Unaccounted";
                    pfVar24[2] = 1.4013e-45;
                    pfVar24[1] = (float)"TargetScan()";
                    *pfVar24 = (float)_DAT_0105d15c;
                    /* try { // try from 00a0aab0 to 00a0aac1 has its CatchHandler @ 00a0b7cd */
                    pfVar24[-1] = 1.4754918e-38;
                    _DAT_0105d15c =
                         (int *)CVProfNode::GetSubNode
                                          ((char *)*pfVar24,(int)pfVar24[1],(char *)pfVar24[2],
                                           (int)pfVar24[3]);
                  }
                  *pfVar24 = (float)_DAT_0105d15c;
                  pfVar24[-1] = 1.4754936e-38;
                  CVProfNode::EnterScope();
                  DAT_0105d158 = '\0';
                }
              }
              pfVar23 = pfVar24;
              if (local_1a4 != local_230) {
                iVar8 = *local_230;
                *pfVar24 = (float)local_230;
                    /* try { // try from 00a0a94c to 00a0a970 has its CatchHandler @ 00a0b7a5 */
                pcVar4 = *(code **)(iVar8 + 300);
                pfVar24[-1] = 1.475442e-38;
                cVar7 = (*pcVar4)();
                if (cVar7 != '\0') {
                  if (local_194 != -1) {
                    *pfVar24 = (float)local_230;
                    pfVar24[-1] = 1.4754464e-38;
                    iVar8 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar24);
                    if (iVar8 != local_194) goto LAB_00a0a980;
                  }
                  iVar8 = *local_230;
                  *pfVar24 = (float)local_230;
                    /* try { // try from 00a0aadb to 00a0aeac has its CatchHandler @ 00a0b7a5 */
                  pcVar4 = *(code **)(iVar8 + 0x558);
                  pfVar24[-1] = 1.4754979e-38;
                  cVar7 = (*pcVar4)();
                  if (cVar7 == '\0') {
                    iVar8 = *local_1a4;
                    pfVar24[1] = (float)local_1a4;
                    *pfVar24 = (float)&local_1ec;
                    pcVar4 = *(code **)(iVar8 + 0x234);
                    pfVar24[-1] = 1.4755028e-38;
                    (*pcVar4)();
                    local_1dc = local_19c * local_184 + local_1e8;
                    local_1d8 = local_198 * local_184 + local_1e4;
                    local_1e0 = local_184 * local_1a0 + local_1ec;
                    iVar8 = *local_230;
                    pfVar24[-1] = (float)local_230;
                    pcVar4 = *(code **)(iVar8 + 0x288);
                    pfVar24[-2] = 1.475518e-38;
                    uVar15 = (*pcVar4)();
                    pfVar24[3] = 0.0;
                    pfVar24[2] = (float)local_1d4;
                    *pfVar24 = (float)&local_1ec;
                    pfVar24[1] = (float)&local_1e0;
                    pfVar24[-1] = (float)uVar15;
                    pfVar24[-2] = 1.4755244e-38;
                    CalcClosestPointOnLineSegment
                              ((Vector *)pfVar24[-1],(Vector *)*pfVar24,(Vector *)pfVar24[1],
                               (Vector *)pfVar24[2],(float *)pfVar24[3]);
                    piVar18 = local_230;
                    if ((*(byte *)((int)local_230 + 0x14d) & 8) != 0) {
                      pfVar24[-1] = (float)local_230;
                      pfVar24[-2] = 1.4755282e-38;
                      CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar24[-1]);
                    }
                    iVar8 = local_230[0x65];
                    local_1ec = (float)piVar18[0xb8];
                    local_1e8 = (float)piVar18[0xb9];
                    local_1e4 = (float)piVar18[0xba];
                    pfVar24[-1] = (float)(local_230 + 0x65);
                    pcVar4 = *(code **)(iVar8 + 8);
                    pfVar24[-2] = 1.4755416e-38;
                    local_1e0 = local_1ec;
                    local_1dc = local_1e8;
                    local_1d8 = local_1e4;
                    iVar8 = (*pcVar4)();
                    fVar26 = *(float *)(iVar8 + 8);
                    pfVar24[2] = (float)&local_1f8;
                    *pfVar24 = (float)&local_1ec;
                    pfVar24[3] = 0.0;
                    pfVar24[1] = (float)&local_1e0;
                    pfVar24[-1] = (float)local_1d4;
                    local_1d8 = local_1d8 + fVar26;
                    pfVar24[-2] = 1.475551e-38;
                    CalcClosestPointOnLineSegment
                              ((Vector *)pfVar24[-1],(Vector *)*pfVar24,(Vector *)pfVar24[1],
                               (Vector *)pfVar24[2],(float *)pfVar24[3]);
                    if (local_180 != '\0') {
                      pfVar24[5] = -1.0;
                      pfVar24[4] = 1.4013e-45;
                      pfVar24[3] = 3.57331e-43;
                      pfVar24[2] = 3.57331e-43;
                      pfVar24[1] = 3.57331e-43;
                      *pfVar24 = 1.0;
                      pfVar24[-1] = (float)&local_1f8;
                      pfVar24[-2] = 1.4755601e-38;
                      NDebugOverlay::Cross3D
                                ((Vector *)pfVar24[-1],*pfVar24,(int)pfVar24[1],(int)pfVar24[2],
                                 (int)pfVar24[3],*(bool *)(pfVar24 + 4),pfVar24[5]);
                      pfVar24[5] = -1.0;
                      pfVar24[4] = 1.4013e-45;
                      pfVar24[3] = 0.0;
                      pfVar24[2] = 0.0;
                      pfVar24[1] = 3.57331e-43;
                      *pfVar24 = (float)&local_1ec;
                      pfVar24[-1] = (float)&local_1e0;
                      pfVar24[-2] = 1.4755683e-38;
                      NDebugOverlay::Line((Vector *)pfVar24[-1],(Vector *)*pfVar24,(int)pfVar24[1],
                                          (int)pfVar24[2],(int)pfVar24[3],*(bool *)(pfVar24 + 4),
                                          pfVar24[5]);
                    }
                    iVar8 = *local_1a4;
                    *pfVar24 = (float)local_1a4;
                    pfVar24[-1] = (float)&local_1bc;
                    pcVar4 = *(code **)(iVar8 + 0x234);
                    pfVar24[-2] = 1.475572e-38;
                    (*pcVar4)();
                    pfVar24[-2] = (float)&local_1c8;
                    local_1c8 = local_1f8 - local_1bc;
                    local_1c4 = local_1f4 - (float)local_1b8;
                    local_1c0 = local_1f0 - local_1b4;
                    pfVar24[-3] = 1.4755845e-38;
                    VectorNormalize((Vector *)pfVar24[-2]);
                    *pfVar24 = (float)&local_1bc;
                    pfVar24[-1] = (float)&local_1f8;
                    pfVar24[-2] = (float)(local_1a4 + 0x65);
                    pfVar24[-3] = 1.4755886e-38;
                    CCollisionProperty::CalcNearestPoint
                              ((CCollisionProperty *)pfVar24[-2],(Vector *)pfVar24[-1],
                               (Vector *)*pfVar24);
                    pfVar24[-1] = (float)&local_1bc;
                    *pfVar24 = (float)&local_164;
                    pfVar24[-2] = (float)(local_230 + 0x65);
                    pfVar24[-3] = 1.4755932e-38;
                    CCollisionProperty::CalcNearestPoint
                              ((CCollisionProperty *)pfVar24[-2],(Vector *)pfVar24[-1],
                               (Vector *)*pfVar24);
                    pfVar23 = pfVar24 + -2;
                    if ((SQRT((local_1bc - (float)local_164) * (local_1bc - (float)local_164) +
                              ((float)local_1b8 - (float)local_160) *
                              ((float)local_1b8 - (float)local_160) +
                              (local_1b4 - local_15c[0]) * (local_1b4 - local_15c[0])) <= local_188)
                       && (fVar26 = local_1c0 * local_198 +
                                    local_1c8 * local_1a0 + local_1c4 * local_19c,
                          pfVar23 = pfVar24 + -2, local_190 < fVar26)) {
                      *pfVar24 = 1.4013e-45;
                      pfVar24[-1] = (float)local_230;
                      pfVar24[-2] = (float)local_1a4;
                      pfVar24[-3] = 1.475623e-38;
                      cVar7 = CBaseCombatCharacter::IsAbleToSee();
                      pfVar23 = pfVar24 + -2;
                      if (cVar7 != '\0') {
                        if (local_18c <= fVar26) {
                          local_18c = fVar26;
                          local_17c = local_230;
                        }
                        *pfVar24 = (float)&local_230;
                        pfVar24[-1] = local_16c;
                        pfVar24[-2] = (float)&local_178;
                        pfVar24[-3] = 1.4756341e-38;
                        CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
                        InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
                                      *)pfVar24[-2],(int)pfVar24[-1],
                                     (CBaseCombatCharacter **)*pfVar24);
                        pfVar23 = pfVar24 + -2;
                      }
                    }
                  }
                }
              }
LAB_00a0a980:
              iVar8 = _DAT_0105db00;
              if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
                pfVar23[-1] = 1.4754525e-38;
                iVar14 = ThreadGetCurrentId();
                if (iVar8 == iVar14) {
                  *pfVar23 = (float)_DAT_0105d15c;
                  pfVar23[-1] = 1.4754794e-38;
                  cVar7 = CVProfNode::ExitScope();
                  if (cVar7 != '\0') {
                    _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
                  }
                  DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
                }
              }
              if (local_1fc != 0) {
                pfVar23[5] = 0.0;
                pfVar23[4] = 0.0;
                pfVar23[3] = 0.0;
                *pfVar23 = (float)local_1fc;
                pfVar23[1] = (float)local_204;
                pfVar23[2] = (float)local_200;
                pcVar4 = *(code **)(local_1fc + 0x54);
                pfVar23[-1] = 1.475462e-38;
                (*pcVar4)();
              }
              iVar8 = *(int *)(iVar9 + 4);
              uVar13 = (uint)*(ushort *)(iVar8 + 6 + uVar13 * 8);
              piVar18 = (int *)pfVar23;
              pfVar24 = pfVar23;
            } while (uVar13 != 0xffff);
          }
LAB_00a0af61:
          piVar6 = local_17c;
          local_240 = (CBaseEntity *)&local_178;
          piVar22 = piVar18;
          if (local_17c != (int *)0x0) {
            piVar5 = *(int **)this;
            iVar9 = *piVar5;
            piVar18[1] = (int)local_17c;
            *piVar18 = (int)piVar5;
            pcVar4 = *(code **)(iVar9 + 0x410);
            piVar18[-1] = 0xa0af80;
            lVar25 = (longdouble)(*pcVar4)();
            if (*(float *)(SurvivorFogVocalizePercent._28_4_ + 0x2c) <= (float)lVar25 &&
                (float)lVar25 != *(float *)(SurvivorFogVocalizePercent._28_4_ + 0x2c))
            goto LAB_00a0aff4;
            iVar9 = *piVar6;
            *piVar18 = (int)piVar6;
            pcVar4 = *(code **)(iVar9 + 0xc);
            piVar18[-1] = 0xa0afa1;
            puVar16 = (undefined4 *)(*pcVar4)();
            *(undefined4 *)(this + 0x118) = *puVar16;
            piVar18[1] = (int)piVar6;
            *piVar18 = (int)this;
            piVar18[-1] = 0xa0afb5;
            cVar7 = TryToWarnAboutSpecial((Vocalizer *)*piVar18,(CBaseCombatCharacter *)piVar18[1]);
            if (cVar7 == '\0') goto LAB_00a0aff4;
LAB_00a0afb9:
            local_1a8 = &PTR_operator___00c53020;
            local_16c = 0.0;
            *piVar18 = (int)local_240;
            piVar18[-1] = 0xa0afdb;
            CUtlMemory<CBaseCombatCharacter*,int>::Purge
                      ((CUtlMemory<CBaseCombatCharacter*,int> *)*piVar18);
            uVar15 = local_178;
            *piVar18 = (int)local_240;
            local_168 = uVar15;
            piVar18[-1] = 0xa0afef;
            CUtlMemory<CBaseCombatCharacter*,int>::Purge
                      ((CUtlMemory<CBaseCombatCharacter*,int> *)*piVar18);
            goto LAB_00a09c8f;
          }
LAB_00a0aff4:
          uVar15 = *(undefined4 *)(MaxWarnRange._28_4_ + 0x2c);
          fVar26 = *(float *)(AimTolerance._28_4_ + 0x2c);
          local_164 = &PTR_operator___00c22340;
          local_134 = 0;
          local_160 = *(int **)this;
          local_130 = 0;
          local_12c = 0;
          local_128 = 0;
          local_124 = 0;
          iVar9 = *local_160;
          *piVar18 = (int)local_160;
                    /* try { // try from 00a0b057 to 00a0b06e has its CatchHandler @ 00a0b72d */
          pcVar4 = *(code **)(iVar9 + 0x238);
          piVar18[-1] = 0xa0b05d;
          uVar17 = (*pcVar4)();
          *piVar18 = uVar17;
          piVar18[1] = (int)local_15c;
          piVar18[-1] = 0xa0b06f;
          AngleVectors((QAngle *)*piVar18,(Vector *)piVar18[1]);
          local_150 = 2;
          *piVar18 = (int)&local_164;
          local_14c = 1.0 - fVar26;
          local_144 = uVar15;
          local_138 = (int *)0x0;
          local_140 = 0x42480000;
          local_148 = local_14c;
          local_13c = 0;
                    /* try { // try from 00a0b0c3 to 00a0b14b has its CatchHandler @ 00a0b777 */
          piVar18[-1] = 0xa0b0c8;
          ForEachTerrorPlayer<TargetScan<CTerrorPlayer>>((TargetScan *)*piVar18);
          if (local_138 == (int *)0x0) {
            *(undefined4 *)(this + 0x11c) = 0xffffffff;
          }
          else {
            iVar9 = *local_138;
            *piVar18 = (int)local_138;
            pcVar4 = *(code **)(iVar9 + 0xc);
            piVar18[-1] = 0xa0b0de;
            puVar16 = (undefined4 *)(*pcVar4)();
            *(undefined4 *)(this + 0x11c) = *puVar16;
          }
          *piVar18 = (int)(this + 0xa8);
          piVar18[-1] = 0xa0b0f4;
          lVar25 = (longdouble)CountdownTimer::Now();
          if ((*(float *)(this + 0xb0) <= (float)lVar25) && (local_138 != (int *)0x0)) {
            fVar26 = *(float *)this;
            local_1b8 = local_138;
            *piVar18 = (int)&local_1bc;
            local_1b4 = 0.0;
            local_1b0 = 0x497423fe;
            local_1bc = fVar26;
            local_1ac = '\0';
            piVar18[-1] = 0xa0b14c;
            ForEachActor<FriendThreatenedScan>((FriendThreatenedScan *)*piVar18);
            if ((local_1b4 != 0.0) && (local_1ac != '\0')) {
              piVar18[3] = 0;
              piVar18[2] = 1;
              piVar18[1] = (int)"PlayerLookOut";
              *piVar18 = (int)this;
                    /* try { // try from 00a0b61e to 00a0b63e has its CatchHandler @ 00a0b777 */
              piVar18[-1] = 0xa0b623;
              cVar7 = Say();
              if (cVar7 != '\0') {
                iVar9 = *(int *)(MinWarnInterval._28_4_ + 0x2c);
                *piVar18 = (int)(this + 0xa8);
                piVar18[1] = iVar9;
                piVar18[-1] = 0xa0b63f;
                CountdownTimer::Start((CountdownTimer *)*piVar18,(float)piVar18[1]);
              }
              local_164 = &PTR_operator___00c22340;
              *piVar18 = (int)&local_134;
              piVar18[-1] = 0xa0b657;
              CUtlVector<CTerrorPlayer*,CUtlMemory<CTerrorPlayer*,int>>::~CUtlVector
                        ((CUtlVector<CTerrorPlayer*,CUtlMemory<CTerrorPlayer*,int>> *)*piVar18);
              goto LAB_00a0afb9;
            }
          }
          local_164 = &PTR_operator___00c22340;
          *piVar18 = (int)&local_134;
          local_128 = 0;
          piVar18[-1] = 0xa0b185;
          CUtlMemory<CTerrorPlayer*,int>::Purge((CUtlMemory<CTerrorPlayer*,int> *)*piVar18);
          uVar15 = local_134;
          *piVar18 = (int)&local_134;
          local_124 = uVar15;
          piVar18[-1] = 0xa0b199;
          CUtlMemory<CTerrorPlayer*,int>::Purge((CUtlMemory<CTerrorPlayer*,int> *)*piVar18);
          local_1a8 = &PTR_operator___00c53020;
          local_16c = 0.0;
          *piVar18 = (int)local_240;
          piVar18[-1] = 0xa0b1bb;
          CUtlMemory<CBaseCombatCharacter*,int>::Purge
                    ((CUtlMemory<CBaseCombatCharacter*,int> *)*piVar18);
          uVar15 = local_178;
          *piVar18 = (int)local_240;
          local_168 = uVar15;
          piVar18[-1] = 0xa0b1cf;
          CUtlMemory<CBaseCombatCharacter*,int>::Purge
                    ((CUtlMemory<CBaseCombatCharacter*,int> *)*piVar18);
        }
        pVVar1 = this + 0xcc;
        *piVar22 = (int)pVVar1;
        piVar22[-1] = 0xa0a683;
        lVar25 = (longdouble)CountdownTimer::Now();
        if (*(float *)(this + 0xd4) <= (float)lVar25) {
          *piVar22 = (int)pVVar1;
          piVar22[-1] = 0xa0a6a2;
          lVar25 = (longdouble)CountdownTimer::Now();
          if ((float)lVar25 + 10.0 != *(float *)(this + 0xd4)) {
            iVar9 = *(int *)(this + 0xcc);
            *piVar22 = (int)pVVar1;
            piVar22[1] = (int)(this + 0xd4);
            pcVar4 = *(code **)(iVar9 + 4);
            piVar22[-1] = 0xa0b30d;
            (*pcVar4)();
            *(float *)(this + 0xd4) = (float)lVar25 + 10.0;
          }
          if (*(float *)(this + 0xd0) != 10.0) {
            iVar9 = *(int *)(this + 0xcc);
            *piVar22 = (int)pVVar1;
            piVar22[1] = (int)(this + 0xd0);
            pcVar4 = *(code **)(iVar9 + 4);
            piVar22[-1] = 0xa0b26d;
            (*pcVar4)();
            *(undefined4 *)(this + 0xd0) = 0x41200000;
          }
          iVar9 = *(int *)this;
          if ((*(byte *)(iVar9 + 0x14d) & 8) != 0) {
            *piVar22 = iVar9;
            piVar22[-1] = 0xa0a6f3;
            CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar22);
          }
          *piVar22 = 8;
          piVar22[1] = iVar9 + 0x2e0;
          piVar22[-1] = 0xa0a709;
          puVar12 = (uint *)CSoundEnt::GetLoudestSoundOfType(*piVar22,(Vector *)piVar22[1]);
          if ((puVar12 != (uint *)0x0) && (puVar12[8] == 10)) {
            local_240 = (CBaseEntity *)0x0;
            uVar13 = *(uint *)(this + 0xf0);
            if ((uVar13 != 0xffffffff) &&
               ((puVar19 = g_pEntityList + (uVar13 & 0xfff) * 0x10,
                puVar19 != (undefined *)0xfffffffc && (*(uint *)(puVar19 + 8) == uVar13 >> 0xc)))) {
              local_240 = *(CBaseEntity **)(puVar19 + 4);
            }
            local_244 = 0;
            uVar13 = *puVar12;
            if (((uVar13 != 0xffffffff) &&
                (puVar19 = g_pEntityList + (uVar13 & 0xfff) * 0x10,
                puVar19 != (undefined *)0xfffffffc)) && (*(uint *)(puVar19 + 8) == uVar13 >> 0xc)) {
              local_244 = *(int *)(puVar19 + 4);
            }
            if (local_240 != (CBaseEntity *)local_244) {
              local_120[0] = '\0';
              uVar13 = *puVar12;
              if (((uVar13 != 0xffffffff) &&
                  (puVar19 = g_pEntityList + (uVar13 & 0xfff) * 0x10,
                  puVar19 != (undefined *)0xfffffffc)) &&
                 ((*(uint *)(puVar19 + 8) == uVar13 >> 0xc &&
                  (piVar18 = *(int **)(puVar19 + 4), piVar18 != (int *)0x0)))) {
                iVar9 = *piVar18;
                *piVar22 = (int)piVar18;
                pcVar4 = *(code **)(iVar9 + 0x144);
                piVar22[-1] = 0xa0b528;
                piVar18 = (int *)(*pcVar4)();
                if (piVar18 != (int *)0x0) {
                  iVar9 = *piVar18;
                  *piVar22 = (int)piVar18;
                  pcVar4 = *(code **)(iVar9 + 300);
                  piVar22[-1] = 0xa0b539;
                  cVar7 = (*pcVar4)();
                  if (cVar7 != '\0') {
                    *piVar22 = (int)piVar18;
                    piVar22[-1] = 0xa0b545;
                    iVar9 = CTerrorPlayer::ClassifyZombie((CBaseEntity *)*piVar22);
                    if ((iVar9 != 9) && (iVar9 != 0)) {
                      piVar22[1] = (int)"zombieclass:";
                      *piVar22 = (int)local_120;
                      piVar22[-1] = 0xa0b6fe;
                      _V_strcpy((char *)*piVar22,(char *)piVar22[1]);
                      *piVar22 = iVar9;
                      piVar22[-1] = 0xa0b706;
                      iVar9 = ZombieClassName();
                      piVar22[1] = iVar9;
                      piVar22[3] = -1;
                      piVar22[2] = 0x100;
                      *piVar22 = (int)local_120;
                      piVar22[-1] = 0xa0b728;
                      V_strncat((char *)*piVar22,(char *)piVar22[1],piVar22[2],piVar22[3]);
                    }
                  }
                }
                if (local_120[0] != '\0') {
                  piVar22[2] = 1;
                  piVar22[3] = (int)local_120;
                  piVar22[1] = (int)"PlayerWarnHearZombie";
                  *piVar22 = (int)this;
                  piVar22[-1] = 0xa0b581;
                  cVar7 = Say();
                  if (cVar7 != '\0') {
                    *(uint *)(this + 0xf0) = *puVar12;
                    goto LAB_00a09c8f;
                  }
                }
              }
            }
          }
        }
        pVVar1 = this + 0xd8;
        *piVar22 = (int)pVVar1;
        piVar22[-1] = 0xa0a727;
        lVar25 = (longdouble)CountdownTimer::Now();
        piVar18 = *(int **)this;
        if (((float)lVar25 < *(float *)(this + 0xe0)) || ((char)piVar18[0xcbf] == '\0')) {
LAB_00a0a74d:
          iVar9 = *piVar18;
          *piVar22 = (int)piVar18;
          pcVar4 = *(code **)(iVar9 + 0x7e8);
          piVar22[-1] = 0xa0a758;
          cVar7 = (*pcVar4)();
          if (cVar7 != '\0') {
            fVar26 = *(float *)(this + 0xe0);
            *piVar22 = (int)pVVar1;
            piVar22[-1] = 0xa0b423;
            lVar25 = (longdouble)CountdownTimer::Now();
            if (fVar26 - (float)lVar25 < 1.0) {
              piVar22[1] = 0x3f800000;
              *piVar22 = (int)pVVar1;
              piVar22[-1] = 0xa0b45a;
              CountdownTimer::Start((CountdownTimer *)*piVar22,(float)piVar22[1]);
            }
          }
        }
        else {
          iVar9 = *piVar18;
          *piVar22 = (int)piVar18;
          pcVar4 = *(code **)(iVar9 + 0x7e8);
          piVar22[-1] = 0xa0b323;
          cVar7 = (*pcVar4)();
          if (cVar7 != '\0') {
LAB_00a0b34d:
            piVar18 = *(int **)this;
            goto LAB_00a0a74d;
          }
          iVar9 = *(int *)this;
          if (0.0 < *(float *)(iVar9 + 0x3120)) {
            *piVar22 = iVar9 + 0x311c;
                    /* try { // try from 00a0b66f to 00a0b727 has its CatchHandler @ 00a0b7d6 */
            piVar22[-1] = 0xa0b674;
            lVar25 = (longdouble)IntervalTimer::Now();
            if ((float)lVar25 - *(float *)(iVar9 + 0x3120) <= 5.0) goto LAB_00a0b34d;
            iVar9 = *(int *)this;
          }
          piVar22[1] = 1;
          *piVar22 = iVar9;
          piVar22[-1] = 0xa0b349;
          cVar7 = CTerrorPlayer::IsActionBeingPerformedOnMe();
          if (cVar7 != '\0') goto LAB_00a0b34d;
          piVar22[1] = 1;
          *piVar22 = *(undefined4 *)this;
          piVar22[-1] = 0xa0b366;
          cVar7 = CTerrorPlayer::IsPerformingActionOnSelf();
          if (cVar7 != '\0') goto LAB_00a0b34d;
          piVar22[3] = 0;
          piVar22[2] = 1;
          piVar22[1] = (int)"PlayerGoingToDie";
          *piVar22 = (int)this;
          piVar22[-1] = 0xa0b38a;
          cVar7 = Say();
          if (cVar7 != '\0') {
            fVar26 = *(float *)(GoingToDieInterval._28_4_ + 0x2c);
            *piVar22 = (int)pVVar1;
            piVar22[-1] = 0xa0b3ac;
            lVar25 = (longdouble)CountdownTimer::Now();
            if ((float)lVar25 + fVar26 != *(float *)(this + 0xe0)) {
              iVar9 = *(int *)(this + 0xd8);
              *piVar22 = (int)pVVar1;
              piVar22[1] = (int)(this + 0xe0);
              pcVar4 = *(code **)(iVar9 + 4);
              piVar22[-1] = 0xa0b6b4;
              (*pcVar4)();
              *(float *)(this + 0xe0) = (float)lVar25 + fVar26;
            }
            if (fVar26 != *(float *)(this + 0xdc)) {
              iVar9 = *(int *)(this + 0xd8);
              *piVar22 = (int)pVVar1;
              piVar22[1] = (int)(this + 0xdc);
              pcVar4 = *(code **)(iVar9 + 4);
              piVar22[-1] = 0xa0b400;
              (*pcVar4)();
              *(float *)(this + 0xdc) = fVar26;
            }
            goto LAB_00a09c8f;
          }
        }
        if (this[0x120] == (Vocalizer)0x0) {
          *piVar22 = 2;
                    /* try { // try from 00a0b1db to 00a0b580 has its CatchHandler @ 00a0b7d6 */
          piVar22[-1] = 0xa0b1e0;
          iVar9 = GetGlobalTeam(*piVar22);
          if (iVar9 == 0) {
LAB_00a0b204:
            pcVar21 = "ScenarioJoin";
          }
          else {
            *piVar22 = 2;
            piVar22[-1] = 0xa0b1f0;
            piVar18 = (int *)GetGlobalTeam(*piVar22);
            iVar9 = *piVar18;
            *piVar22 = (int)piVar18;
            pcVar4 = *(code **)(iVar9 + 0x354);
            piVar22[-1] = 0xa0b1fb;
            iVar9 = (*pcVar4)();
            if (iVar9 != 4) goto LAB_00a0b204;
            pcVar21 = "ScenarioJoinLast";
          }
          piVar22[1] = (int)"ScenarioName:%s";
          piVar22[2] = TheDirector + 0x3b4;
          *piVar22 = (int)local_120;
          piVar22[-1] = 0xa0b22d;
          CFmtStrN<64>::CFmtStrN((CFmtStrN<64> *)*piVar22,(char *)piVar22[1]);
          piVar22[2] = 1;
          piVar22[3] = (int)local_11b;
          piVar22[1] = (int)pcVar21;
          *piVar22 = (int)this;
          piVar22[-1] = 0xa0b24b;
          Say();
          this[0x120] = (Vocalizer)0x1;
        }
        if (*(int *)(this + 0x124) != 0) {
          iVar9 = **(int **)this;
          *piVar22 = (int)*(int **)this;
          pcVar4 = *(code **)(iVar9 + 0x52c);
          piVar22[-1] = 0xa0a784;
          iVar9 = (*pcVar4)();
          if ((iVar9 == 0) || ((*(uint *)(iVar9 + 300) & 0x840) == 0)) {
            if (s_bAnyoneHasSaidCheckpointLine == '\0') {
              piVar22[3] = 0;
              piVar22[2] = 1;
              iVar9 = *(int *)(this + 0x124);
              *piVar22 = (int)this;
              piVar22[1] = iVar9;
                    /* try { // try from 00a0b5f1 to 00a0b5f5 has its CatchHandler @ 00a0b7d6 */
              piVar22[-1] = 0xa0b5f6;
              cVar7 = Say();
              if (cVar7 == '\0') goto LAB_00a0a7cf;
            }
            s_bAnyoneHasSaidCheckpointLine = '\x01';
            *(undefined4 *)(this + 0x124) = 0;
            this[0x121] = (Vocalizer)0x1;
            goto LAB_00a09c8f;
          }
          *(undefined4 *)(this + 0x124) = 0;
          this[0x121] = (Vocalizer)0x1;
        }
LAB_00a0a7cf:
        iVar9 = **(int **)this;
        *piVar22 = (int)*(int **)this;
        pcVar4 = *(code **)(iVar9 + 0x7e8);
        piVar22[-1] = 0xa0a7dc;
        cVar7 = (*pcVar4)();
        if (cVar7 == '\0') {
          *piVar22 = TheDirector;
          piVar22[-1] = 0xa0b289;
          cVar7 = CDirector::IsFinaleVehicleReady((CDirector *)*piVar22);
          if (cVar7 != '\0') {
            *piVar22 = (int)(this + 0xe4);
            piVar22[-1] = 0xa0b29f;
            lVar25 = (longdouble)CountdownTimer::Now();
            if (*(float *)(this + 0xec) <= (float)lVar25) {
              piVar22[3] = 0;
              piVar22[2] = 1;
              piVar22[1] = (int)"PlayerGetToRescueVehicle";
              *piVar22 = (int)this;
              piVar22[-1] = 0xa0b2da;
              cVar7 = Say();
              if (cVar7 != '\0') {
                piVar22[1] = 0x40a00000;
                *piVar22 = (int)(this + 0xe4);
                piVar22[-1] = 0xa0b2f2;
                CountdownTimer::Start((CountdownTimer *)*piVar22,(float)piVar22[1]);
              }
            }
          }
        }
        iVar9 = _DAT_0105db00;
        if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
          piVar22[-1] = 0xa0a801;
          iVar8 = ThreadGetCurrentId();
          if (iVar9 == iVar8) {
            *piVar22 = (int)_DAT_0105d15c;
            piVar22[-1] = 0xa0b5b2;
            cVar7 = CVProfNode::ExitScope();
            if (cVar7 != '\0') {
              _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
            }
            DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
          }
        }
        iVar8 = local_214;
        iVar9 = local_21c;
        if (local_214 != 0) {
          piVar22[5] = 0;
          iVar14 = local_218;
          piVar22[4] = 0;
          piVar22[3] = 0;
          *piVar22 = iVar8;
          piVar22[1] = iVar9;
          piVar22[2] = iVar14;
          pcVar4 = *(code **)(iVar8 + 0x54);
          piVar22[-1] = 0xa0a849;
          (*pcVar4)();
        }
        goto LAB_00a09ce6;
      }
    }
  }
LAB_00a09c8f:
  iVar9 = _DAT_0105db00;
  if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
    piVar22[-1] = 0xa09d73;
    iVar8 = ThreadGetCurrentId();
    if (iVar9 == iVar8) {
      *piVar22 = (int)_DAT_0105d15c;
      piVar22[-1] = 0xa09d88;
      cVar7 = CVProfNode::ExitScope();
      if (cVar7 != '\0') {
        _DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
      }
      DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
    }
  }
  iVar8 = local_214;
  iVar9 = local_21c;
  if (local_214 != 0) {
    piVar22[5] = 0;
    iVar14 = local_218;
    piVar22[4] = 0;
    piVar22[3] = 0;
    *piVar22 = iVar8;
    piVar22[1] = iVar9;
    piVar22[2] = iVar14;
    pcVar4 = *(code **)(iVar8 + 0x54);
    piVar22[-1] = 0xa09ce6;
    (*pcVar4)();
  }
LAB_00a09ce6:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)((int)piVar22 + -4) = 0xa0b6c4;
  __stack_chk_fail();
}

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)