L L4D2node

CTerrorPlayer::FireBullet

0x0052a3a0 · 10375 bytes · __cdecl

_ZN13CTerrorPlayer10FireBulletE6VectorRK6QAngle10CSWeaponIDi

Decompiled

undefined (4 params)

/* CTerrorPlayer::FireBullet(Vector, QAngle const&, CSWeaponID, int) */

void CTerrorPlayer::FireBullet
               (CTerrorPlayer *param_1,float param_2,float param_3,float param_4,float *param_5,
               undefined4 param_6,int param_7)

{
  float fVar1;
  ushort uVar2;
  code *pcVar3;
  bool bVar4;
  bool bVar5;
  short sVar6;
  CBaseEntity *pCVar7;
  int iVar8;
  char cVar9;
  CBaseAnimating *pCVar10;
  undefined *puVar11;
  CAmmoDef *this;
  int *piVar12;
  int *piVar13;
  int iVar14;
  CBaseEntity *pCVar15;
  undefined4 *puVar16;
  uint uVar17;
  int iVar18;
  IHandleEntity *pIVar19;
  int iVar20;
  uint uVar21;
  undefined1 *puVar22;
  uint uVar23;
  ushort *puVar24;
  int in_GS_OFFSET;
  bool bVar25;
  longdouble lVar26;
  longdouble lVar27;
  longdouble lVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  undefined **ppuVar34;
  float local_6c0;
  int local_6b4;
  int local_6b0;
  float local_69c;
  float local_698;
  float local_694;
  int local_690;
  float local_674;
  float local_668;
  CFindActiveTongues local_641;
  undefined ***local_640;
  float local_63c;
  float local_638;
  undefined **local_634;
  float local_630;
  float local_62c;
  float local_628;
  undefined4 local_624;
  undefined4 local_620;
  undefined4 local_61c;
  float local_618;
  float local_614;
  float local_610;
  CTraceFilterChain local_60c [12];
  undefined **local_600;
  float local_5fc;
  float local_5f8;
  undefined4 local_5f4;
  undefined4 local_5f0;
  undefined4 local_5ec;
  undefined4 local_5e8;
  undefined4 local_5e4;
  undefined4 local_5e0;
  undefined **local_5dc [4];
  undefined4 local_5cc [3];
  undefined4 local_5c0;
  undefined4 local_5bc;
  undefined **local_5b8 [4];
  undefined4 local_5a8 [3];
  undefined4 local_59c;
  undefined4 local_598;
  CBaseEntity *local_594;
  int local_590;
  float local_58c;
  float local_588;
  float local_584;
  undefined4 local_580;
  undefined4 local_57c;
  undefined4 local_578;
  uint local_574;
  uint local_570;
  float local_56c;
  float local_568;
  float local_564;
  undefined1 local_560;
  undefined1 local_55f;
  char local_55e;
  char local_55d;
  float local_55c;
  float local_558;
  float local_554;
  float local_54c;
  float local_548;
  float local_544;
  undefined4 local_53c;
  undefined4 local_538;
  undefined4 local_534;
  undefined4 local_52c;
  undefined4 local_528;
  undefined4 local_524;
  undefined4 local_51c;
  undefined1 local_518;
  undefined1 local_517;
  undefined **local_50c;
  float local_508;
  float local_504;
  float local_4fc;
  float local_4f8;
  float local_4f4;
  undefined4 local_4ec;
  undefined4 local_4e8;
  undefined4 local_4e4;
  undefined4 local_4dc;
  undefined4 local_4d8;
  undefined4 local_4d4;
  undefined4 local_4cc;
  undefined1 local_4c8;
  undefined1 local_4c7;
  float local_4b4;
  float local_4b0;
  float local_4ac;
  undefined **local_4a8;
  float local_4a4;
  float local_4a0;
  undefined4 local_49c;
  undefined4 local_498;
  undefined4 local_494;
  undefined4 local_490;
  undefined1 local_48c;
  undefined1 local_48b;
  undefined2 local_48a;
  undefined4 local_488;
  uint local_484;
  undefined2 local_480;
  undefined1 local_47e;
  undefined1 local_47d;
  undefined4 local_47c;
  undefined4 local_478;
  undefined4 local_474;
  undefined4 local_470;
  undefined2 local_46c;
  undefined2 local_46a;
  CBaseAnimating *local_468;
  undefined4 local_464;
  float local_460;
  float local_45c;
  float local_458;
  undefined **local_454;
  float local_450;
  float local_44c;
  undefined4 local_448;
  undefined4 local_444;
  undefined4 local_440;
  undefined4 local_43c;
  undefined1 local_438;
  undefined1 local_437;
  undefined2 local_436;
  undefined4 local_434;
  uint local_430;
  undefined2 local_42c;
  undefined1 local_42a;
  undefined1 local_429;
  undefined4 local_428;
  undefined4 local_424;
  undefined4 local_420;
  undefined4 local_41c;
  undefined2 local_418;
  undefined2 local_416;
  CBaseAnimating *local_414;
  undefined4 local_410;
  undefined **local_40c;
  float local_408;
  float local_404;
  float local_400;
  float local_3fc;
  float local_3f8;
  byte local_3dc;
  char local_3d5;
  undefined4 local_3b8;
  undefined4 local_3b4;
  undefined4 local_3b0;
  Vector local_3ac [32];
  float local_38c;
  undefined4 local_380;
  float local_37c;
  uint local_370;
  undefined4 local_36c;
  undefined4 local_364;
  float local_358;
  float local_354;
  float local_350;
  undefined **local_34c;
  float local_348;
  float local_344;
  undefined4 local_340;
  undefined4 local_33c;
  undefined4 local_338;
  undefined4 local_334;
  undefined1 local_330;
  undefined1 local_32f;
  undefined2 local_32e;
  undefined4 local_32c;
  uint local_328;
  undefined2 local_324;
  undefined1 local_322;
  undefined1 local_321;
  undefined4 local_320;
  undefined4 local_31c;
  undefined4 local_318;
  undefined4 local_314;
  undefined2 local_310;
  undefined2 local_30e;
  CBaseAnimating *local_30c;
  undefined4 local_308;
  uint local_304;
  int local_300;
  float local_2fc;
  float local_2f8;
  float local_2f4;
  undefined **local_2f0;
  float local_2ec;
  float local_2e8;
  float local_2e4;
  bool local_2c0;
  char local_2bf;
  undefined1 local_2be;
  undefined1 local_2bd;
  char local_2bc;
  char local_2b8 [20];
  undefined **local_2a4 [14];
  char local_269;
  undefined4 local_24c;
  undefined4 local_248;
  undefined1 local_244 [512];
  undefined4 local_44;
  undefined1 *local_40;
  code *local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_30;
  ushort local_2c;
  ushort local_2a;
  undefined2 local_28;
  undefined2 local_26;
  undefined4 local_24;
  int local_20;
  
  puVar22 = &stack0xfffff914;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_590 = CTerrorWeaponInfo::GetWeaponInfo();
  if (local_590 == 0) goto LAB_0052bcf1;
  if ((0 < *(int *)(sv_showplayerhitboxes._28_4_ + 0x30)) &&
     (pCVar10 = (CBaseAnimating *)UTIL_PlayerByIndex(*(int *)(sv_showplayerhitboxes._28_4_ + 0x30)),
     pCVar10 != (CBaseAnimating *)0x0)) {
    CBaseAnimating::DrawServerHitboxes(pCVar10,4.0,true);
  }
  iVar8 = local_590;
  local_630 = *param_5;
  local_62c = param_5[1];
  local_628 = param_5[2];
  uVar21 = *(uint *)(param_1 + 0x1d14);
  if (((uVar21 == 0xffffffff) ||
      (puVar11 = g_pEntityList + (uVar21 & 0xfff) * 0x10, puVar11 == (undefined *)0xfffffffc)) ||
     (*(uint *)(puVar11 + 8) != uVar21 >> 0xc)) {
LAB_0052a47b:
    local_574 = 0x46004003;
    pIVar19 = (IHandleEntity *)0x0;
  }
  else {
    pIVar19 = *(IHandleEntity **)(puVar11 + 4);
    local_574 = 0x6004003;
    if (pIVar19 == (IHandleEntity *)0x0) goto LAB_0052a47b;
  }
  CTraceFilterSimpleList::CTraceFilterSimpleList((CTraceFilterSimpleList *)local_5dc,0);
                    /* try { // try from 0052a4b0 to 0052a6e9 has its CatchHandler @ 0052cd5d */
  CTraceFilterSimpleList::AddEntityToIgnore
            ((CTraceFilterSimpleList *)local_5dc,(IHandleEntity *)param_1);
  uVar21 = *(uint *)(param_1 + 0x2e24);
  if (((uVar21 != 0xffffffff) &&
      (puVar11 = g_pEntityList + (uVar21 & 0xfff) * 0x10, puVar11 != (undefined *)0xfffffffc)) &&
     ((*(uint *)(puVar11 + 8) == uVar21 >> 0xc &&
      (*(IHandleEntity **)(puVar11 + 4) != (IHandleEntity *)0x0)))) {
                    /* try { // try from 0052cd53 to 0052cd57 has its CatchHandler @ 0052cd5d */
    CTraceFilterSimpleList::AddEntityToIgnore
              ((CTraceFilterSimpleList *)local_5dc,*(IHandleEntity **)(puVar11 + 4));
  }
  if (pIVar19 != (IHandleEntity *)0x0) {
    CTraceFilterSimpleList::AddEntityToIgnore((CTraceFilterSimpleList *)local_5dc,pIVar19);
  }
  local_640 = local_5dc;
  ForEachTerrorPlayer<IgnoreGhosts>((IgnoreGhosts *)&local_640);
  local_641 = (CFindActiveTongues)0x0;
  ForEachTerrorPlayer<CFindActiveTongues>(&local_641);
  local_560 = false;
  local_58c = param_2;
  local_588 = param_3;
  local_584 = param_4;
  if (local_641 != (CFindActiveTongues)0x0) {
    uVar21 = *(uint *)(param_1 + 0x33c4);
    if (((uVar21 == 0xffffffff) ||
        (puVar11 = g_pEntityList + (uVar21 & 0xfff) * 0x10, puVar11 == (undefined *)0xfffffffc)) ||
       (*(uint *)(puVar11 + 8) != uVar21 >> 0xc)) {
      local_560 = true;
    }
    else {
      local_560 = *(int *)(puVar11 + 4) == 0;
    }
  }
  (**(code **)(*(int *)param_1 + 0x478))();
  puVar22 = &stack0xfffff910;
  local_594 = (CBaseEntity *)param_1;
  local_580 = local_624;
  iVar14 = *(int *)(local_590 + 0x850);
  local_57c = local_620;
  local_578 = local_61c;
  this = (CAmmoDef *)GetAmmoDef();
  local_570 = CAmmoDef::DamageType(this,iVar14);
  local_56c = *(float *)(local_590 + 0xc4c) * *(float *)(local_590 + 0xc4c);
  local_568 = *(float *)(local_590 + 0xc50) * *(float *)(local_590 + 0xc50);
  local_564 = *(float *)(local_590 + 0xc54) * *(float *)(local_590 + 0xc54);
  if ((*(int *)(local_590 + 0x158) == 0) &&
     (piVar12 = (int *)GetActiveTerrorWeapon(param_1), piVar12 != (int *)0x0)) {
    cVar9 = (**(code **)(*piVar12 + 0x6b4))();
    if (cVar9 != '\0') {
      local_570 = local_570 | 8;
      local_56c = 0.0;
    }
    cVar9 = (**(code **)(*piVar12 + 0x6b4))();
    if (cVar9 != '\0') {
      local_570 = local_570 | 0x80800040;
      local_56c = 0.0;
    }
  }
  piVar12 = mdlcache;
  local_55e = '\0';
  local_55f = 0;
  (**(code **)(*mdlcache + 0x68))();
  iVar14 = *(int *)(local_590 + 0x9d8);
  iVar18 = *(int *)(perf_fire_bullet_single._28_4_ + 0x30);
  iVar20 = 1;
  if ((iVar18 != 1) && (iVar20 = iVar14 * iVar18, iVar18 < 2)) {
    iVar20 = iVar14;
  }
                    /* try { // try from 0052a71c to 0052a8e7 has its CatchHandler @ 0052cd2a */
  piVar13 = (int *)GetActiveTerrorWeapon(param_1);
  if ((piVar13 == (int *)0x0) || (local_55d = (**(code **)(*piVar13 + 0x6b4))(), local_55d == '\0'))
  {
    local_6b4 = iVar20 + -1;
    local_55d = iVar14 == 1;
  }
  else {
    local_6b4 = 0;
    iVar20 = 1;
  }
  fVar29 = *(float *)(iVar8 + 0xc30);
  if (fVar29 == 0.0) {
    local_6c0 = 1.0;
  }
  else if (*(float *)(iVar8 + 0xc2c) == 0.0) {
    local_6c0 = 1.0;
  }
  else {
    local_6c0 = *(float *)(iVar8 + 0xc2c) / fVar29;
  }
  if (0 < iVar20) {
    bVar5 = true;
    do {
      param_7 = param_7 + 1;
      if ((fVar29 != 0.0) && (!bVar5)) {
        lVar26 = (longdouble)
                 SharedRandomFloat("CTerrorPlayer::FireBullet Spread",-fVar29,fVar29,param_7);
        lVar27 = (longdouble)
                 SharedRandomFloat("CTerrorPlayer::FireBullet SpreadDir",0.0,180.0,param_7);
        lVar28 = (longdouble)(((float)lVar27 + (float)lVar27) * 0.017453292);
        lVar27 = (longdouble)fcos(lVar28);
        lVar28 = (longdouble)fsin(lVar28);
        local_628 = param_5[2];
        local_630 = local_6c0 * (float)lVar26 * (float)lVar28 + *param_5;
        local_62c = (float)lVar27 * (float)lVar26 + param_5[1];
      }
      AngleVectors((QAngle *)&local_630,(Vector *)&local_618);
      CTraceFilterSimpleList::CTraceFilterSimpleList((CTraceFilterSimpleList *)local_5b8,0);
                    /* try { // try from 0052a905 to 0052a909 has its CatchHandler @ 0052cd26 */
      CTraceFilterChain::CTraceFilterChain
                (local_60c,(ITraceFilter *)local_5dc,(ITraceFilter *)local_5b8);
      fVar32 = local_584;
      fVar31 = local_588;
      fVar30 = local_58c;
      local_304 = 0xffffffff;
      local_300 = 0;
      local_2e4 = 0.0;
      local_69c = local_58c;
      fVar29 = *(float *)(local_590 + 0x9d0);
      local_698 = local_584;
      ppuVar34 = (undefined **)(local_618 * fVar29 + local_58c);
      local_694 = local_588;
      local_2bd = local_55f;
      fVar33 = local_614 * fVar29 + local_588;
      fVar29 = fVar29 * local_610 + local_584;
      if (local_55e == '\0') {
        local_2c0 = false;
      }
      else {
        local_544 = fVar29 - local_584;
        local_54c = (float)ppuVar34 - local_58c;
        local_518 = 1;
        local_548 = fVar33 - local_588;
        local_40c = &PTR_ShouldHitEntity_00c2ac08;
        local_524 = 0;
        local_528 = 0;
        local_52c = 0;
        local_51c = 0;
        local_534 = 0;
        local_538 = 0;
        local_53c = 0;
        local_55c = local_58c;
        local_517 = local_544 * local_544 + local_54c * local_54c + local_548 * local_548 != 0.0;
        local_558 = local_588;
        local_554 = local_584;
                    /* try { // try from 0052ca95 to 0052cadd has its CatchHandler @ 0052cd26 */
        (**(code **)(*enginetrace + 0x14))();
        if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
          DebugDrawLine((Vector *)&local_3b8,local_3ac,0xff,0,0,true,-1.0);
        }
        local_2c0 = local_38c != 1.0;
      }
      local_2f8 = local_614;
      local_2f4 = local_610;
      local_2fc = local_618;
      local_2be = local_560;
      local_2bf = '\x01';
      local_2bc = '\0';
      local_4b4 = fVar30;
      local_4b0 = fVar31;
      local_4ac = fVar32;
      local_488 = 0x3f800000;
      local_47e = 0;
      local_47d = 0;
      local_468 = (CBaseAnimating *)0x0;
      local_47c = 0;
      local_460 = fVar30;
      local_45c = fVar31;
      local_458 = fVar32;
      local_448 = local_49c;
      local_434 = 0x3f800000;
      local_42a = 0;
      local_444 = local_498;
      local_438 = local_48c;
      local_440 = local_494;
      local_429 = 0;
      local_43c = local_490;
      local_437 = local_48b;
      local_428 = 0;
      local_420 = local_474;
      local_414 = (CBaseAnimating *)0x0;
      local_436 = local_48a;
      local_430 = local_484;
      local_42c = local_480;
      local_424 = local_478;
      local_41c = local_470;
      local_418 = local_46c;
      local_416 = local_46a;
      local_410 = local_464;
      local_40 = local_244;
      local_2a4[0] = &PTR_EnumElement_00c341b0;
      local_2c = 0xffff;
      local_2a = 0;
      local_28 = 0xffff;
      local_26 = 0xffff;
      local_690 = *(int *)(local_590 + 0xc48);
      local_24c = 0xffffffff;
      local_248 = 0;
      local_44 = 0;
      local_3c = CDefOps<float>::LessFunc;
      local_38 = 0;
      local_34 = 0;
      local_30 = 0;
      local_24 = 0;
      local_4a8 = ppuVar34;
      local_4a4 = fVar33;
      local_4a0 = fVar29;
      local_454 = ppuVar34;
      local_450 = fVar33;
      local_44c = fVar29;
      local_2f0 = ppuVar34;
      local_2ec = fVar33;
      local_2e8 = fVar29;
      if ((local_570 & 0x800000) == 0) {
        if (0 < local_690) goto LAB_0052ac71;
      }
      else {
        local_690 = 1;
LAB_0052ac71:
        local_6b0 = 0xf;
        while( true ) {
          local_524 = 0;
          local_518 = 1;
          local_55c = local_69c;
          local_558 = local_694;
          local_54c = (float)ppuVar34 - local_69c;
          local_528 = 0;
          local_548 = fVar33 - local_694;
          local_52c = 0;
          local_51c = 0;
          local_544 = fVar29 - local_698;
          local_534 = 0;
          local_538 = 0;
          local_53c = 0;
          local_554 = local_698;
          local_44 = 0;
          local_517 = local_548 * local_548 + local_54c * local_54c + local_544 * local_544 != 0.0;
          CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
          ::RemoveAll((CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                       *)&local_3c);
                    /* try { // try from 0052adb0 to 0052bbd8 has its CatchHandler @ 0052cc73 */
          CTraceBulletEntityEnumerator::PerformMultiTrace
                    ((CTraceBulletEntityEnumerator *)local_2a4,(Ray_t *)&local_55c,
                     (Vector *)&local_618,local_574,(ITraceFilter *)local_60c);
          if ((local_269 != '\0') || (uVar21 = (uint)local_2a, uVar2 = local_2c, uVar21 == 0))
          break;
          while( true ) {
            uVar23 = (uint)uVar2;
            if ((CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                 ::Links(unsigned_short)::s_Sentinel == '\0') &&
               (iVar14 = __cxa_guard_acquire(), iVar14 != 0)) {
              CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
              ::Links(unsigned_short)::s_Sentinel = -1;
              DAT_00f1d16a = 0xffff;
              DAT_00f1d16c = 0xffff;
              __cxa_guard_release();
            }
            sVar6 = CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                    ::Links(unsigned_short)::s_Sentinel;
            if (uVar2 != 0xffff) {
              sVar6 = *(short *)(uVar23 * 0x68 + local_38);
            }
            if (sVar6 == -1) break;
            if (CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                ::Links(unsigned_short)::s_Sentinel == '\0') {
              iVar14 = __cxa_guard_acquire();
              if (iVar14 != 0) {
                CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                ::Links(unsigned_short)::s_Sentinel = -1;
                DAT_00f1d16a = 0xffff;
                DAT_00f1d16c = 0xffff;
                __cxa_guard_release();
              }
              if (uVar2 != 0xffff) goto LAB_0052ae1b;
LAB_0052bd35:
              puVar24 = (ushort *)
                        &CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                         ::Links(unsigned_short)::s_Sentinel;
            }
            else {
              if (uVar2 == 0xffff) goto LAB_0052bd35;
LAB_0052ae1b:
              puVar24 = (ushort *)(uVar23 * 0x68 + local_38);
            }
            uVar2 = *puVar24;
          }
          if (uVar23 != 0xffff) {
            iVar14 = uVar21 - 1;
            do {
              iVar18 = uVar23 * 0x68 + local_38;
              local_358 = *(float *)(iVar18 + 0xc);
              local_330 = *(undefined1 *)(iVar18 + 0x34);
              local_354 = *(float *)(iVar18 + 0x10);
              local_350 = *(float *)(iVar18 + 0x14);
              local_34c = *(undefined ***)(iVar18 + 0x18);
              local_348 = *(float *)(iVar18 + 0x1c);
              local_344 = *(float *)(iVar18 + 0x20);
              local_340 = *(undefined4 *)(iVar18 + 0x24);
              local_33c = *(undefined4 *)(iVar18 + 0x28);
              local_32f = *(undefined1 *)(iVar18 + 0x35);
              local_338 = *(undefined4 *)(iVar18 + 0x2c);
              local_334 = *(undefined4 *)(iVar18 + 0x30);
              local_32e = *(undefined2 *)(iVar18 + 0x36);
              local_32c = *(undefined4 *)(iVar18 + 0x38);
              local_328 = *(uint *)(iVar18 + 0x3c);
              local_324 = *(undefined2 *)(iVar18 + 0x40);
              local_322 = *(undefined1 *)(iVar18 + 0x42);
              local_321 = *(undefined1 *)(iVar18 + 0x43);
              local_318 = *(undefined4 *)(iVar18 + 0x4c);
              local_320 = *(undefined4 *)(iVar18 + 0x44);
              local_31c = *(undefined4 *)(iVar18 + 0x48);
              local_308 = *(undefined4 *)(iVar18 + 0x5c);
              local_314 = *(undefined4 *)(iVar18 + 0x50);
              local_304 = *(uint *)(iVar18 + 0x60);
              local_310 = *(undefined2 *)(iVar18 + 0x54);
              local_30e = *(undefined2 *)(iVar18 + 0x56);
              local_300 = *(int *)(iVar18 + 100);
              local_30c = *(CBaseAnimating **)(iVar18 + 0x58);
              if (local_30c == (CBaseAnimating *)0x0) {
LAB_0052b0be:
                iVar18 = (**(code **)(*physprops + 0x18))();
                uVar21 = (uint)*(ushort *)(iVar18 + 0x4c);
                if (((local_328 & 2) == 0) || (uVar21 != 0x59)) {
                  local_63c = 0.5;
                  local_638 = 1.0;
                  GetMaterialParameters(uVar21,&local_638,&local_63c);
                  bVar5 = false;
                }
                else {
                  local_63c = 0.99;
                  local_638 = 1.0;
                  bVar5 = true;
                }
                if ((*(uint *)(sv_showimpacts._28_4_ + 0x30) & 0xfffffffd) == 1) {
                  local_5e8 = 0x40000000;
                  local_5e4 = 0x40000000;
                  local_5e0 = 0x40000000;
                  local_5f4 = 0xc0000000;
                  local_5f0 = 0xc0000000;
                  local_5ec = 0xc0000000;
                  NDebugOverlay::Box((Vector *)&local_34c,(Vector *)&local_5f4,(Vector *)&local_5e8,
                                     0,0,0xff,0x7f,4.0);
                  if (local_30c != (CBaseAnimating *)0x0) {
                    cVar9 = (**(code **)(*(int *)local_30c + 0x16c))();
                    pCVar10 = local_30c;
                    if (cVar9 != '\0') {
                      if ((local_30c == (CBaseAnimating *)0x0) ||
                         (cVar9 = (**(code **)(*(int *)local_30c + 0x16c))(), cVar9 == '\0')) {
                        pCVar10 = (CBaseAnimating *)0x0;
                      }
                      CBaseAnimating::DrawServerHitboxes(pCVar10,4.0,true);
                    }
                    goto joined_r0x0052c146;
                  }
LAB_0052c150:
                  bVar25 = false;
                }
                else {
joined_r0x0052c146:
                  if (local_30c == (CBaseAnimating *)0x0) goto LAB_0052c150;
                  iVar18 = (**(code **)(*(int *)local_30c + 0x144))();
                  bVar25 = iVar18 != 0;
                }
                fVar30 = (local_344 - local_584) * (local_344 - local_584) +
                         ((float)local_34c - local_58c) * ((float)local_34c - local_58c) +
                         (local_348 - local_588) * (local_348 - local_588);
                if ((bVar25) && (local_2bc = '\x01', local_564 != 0.0)) {
                  bVar4 = fVar30 <= local_564;
                }
                else {
                  bVar4 = false;
                }
                piVar13 = (int *)(**(code **)(*gameeventmanager + 0x1c))();
                if (piVar13 != (int *)0x0) {
                  pcVar3 = *(code **)(*piVar13 + 0x30);
                  (**(code **)(*engine + 0x40))();
                  (*pcVar3)();
                  (**(code **)(*piVar13 + 0x38))();
                  (**(code **)(*piVar13 + 0x38))();
                  (**(code **)(*piVar13 + 0x38))();
                  (**(code **)(*gameeventmanager + 0x20))();
                }
                if (local_30c != (CBaseAnimating *)0x0) {
                  ClearMultiDamage();
                  iVar18 = local_590;
                  fVar31 = SQRT(fVar30);
                  local_668 = (float)*(int *)(local_590 + 0x9cc);
                  if (fVar31 == 0.0) {
LAB_0052b399:
                    if (local_594 == (CBaseEntity *)0x0) goto LAB_0052c218;
LAB_0052b3a7:
                    pCVar15 = local_594;
                    if (local_30c != (CBaseAnimating *)0x0) {
                      iVar18 = CBaseEntity::GetTeamNumber((CBaseEntity *)local_30c);
                      cVar9 = IsASurvivorTeam(iVar18);
                      pCVar15 = local_594;
                      if (cVar9 != '\0') {
                        iVar18 = CBaseEntity::GetTeamNumber(local_594);
                        cVar9 = IsASurvivorTeam(iVar18);
                        pCVar7 = local_594;
                        pCVar15 = local_594;
                        if (cVar9 != '\0') {
                          if (local_594 == (CBaseEntity *)0x0) goto LAB_0052c218;
                          cVar9 = (**(code **)(*(int *)local_594 + 0x16c))();
                          pCVar15 = local_594;
                          if ((cVar9 != '\0') &&
                             (cVar9 = (**(code **)(*(int *)pCVar7 + 0x7e8))(), pCVar15 = local_594,
                             cVar9 != '\0')) goto LAB_0052af31;
                        }
                      }
                    }
                  }
                  else {
                    lVar27 = (longdouble)__pow_finite();
                    fVar32 = *(float *)(iVar18 + 0xc58);
                    fVar1 = *(float *)(iVar18 + 0x9d0);
                    if ((fVar31 <= fVar32) || (fVar32 <= 0.0)) {
                      local_668 = (float)lVar27 * local_668;
                      goto LAB_0052b399;
                    }
                    if (fVar31 <= fVar1) {
                      lVar26 = (longdouble)Gain((fVar31 - fVar32) / (fVar32 - fVar1) + 1.0,0.8);
                      local_668 = (float)lVar26 * (float)lVar27 * local_668;
                      goto LAB_0052b399;
                    }
                    local_668 = 0.0;
                    if (local_594 != (CBaseEntity *)0x0) goto LAB_0052b3a7;
LAB_0052c218:
                    pCVar15 = (CBaseEntity *)0x0;
                  }
                  CTakeDamageInfo::CTakeDamageInfo
                            ((CTakeDamageInfo *)&local_3b8,pCVar15,pCVar15,local_668,local_570,0);
                  if (local_594 != (CBaseEntity *)0x0) {
                    piVar13 = (int *)CBaseCombatCharacter::GetActiveWeapon
                                               ((CBaseCombatCharacter *)local_594);
                    if (piVar13 == (int *)0x0) {
                      local_380 = 0xffffffff;
                    }
                    else {
                      puVar16 = (undefined4 *)(**(code **)(*piVar13 + 0xc))();
                      local_380 = *puVar16;
                    }
                  }
                  if ((local_570 & 0x800000) == 0) {
                    fVar31 = 0.4;
                  }
                  else if ((local_570 & 0x20000000) == 0) {
                    fVar31 = *(float *)(upgrade_explosive_bullet_force._28_4_ + 0x2c);
                  }
                  else {
                    fVar31 = *(float *)(upgrade_explosive_slug_force._28_4_ + 0x2c);
                  }
                  CalculateBulletDamageForce
                            ((CTakeDamageInfo *)&local_3b8,*(int *)(local_590 + 0x850),
                             (Vector *)&local_2fc,(Vector *)&local_34c,fVar31);
                  local_364 = *(undefined4 *)(local_590 + 0x850);
                  if (local_2bf == '\0') {
                    local_36c = 0xffffffff;
                  }
                  if ((400.0 < *(float *)(local_30c + 0x23c)) ||
                     ((cVar9 = CTerrorGameRules::IsCurrentRoundActive(g_pGameRules), cVar9 == '\0'
                      && (cVar9 = CTerrorGameRules::IsSurvivalMode(), cVar9 != '\0')))) {
                    local_370 = local_370 | 0x800;
                    local_3b8 = 0;
                    local_3b4 = 0;
                    local_3b0 = 0;
                  }
                  if ((*(int *)(sv_showdamage._28_4_ + 0x30) == 2) ||
                     ((*(int *)(sv_showdamage._28_4_ + 0x30) == 1 &&
                      (cVar9 = (**(code **)(*(int *)local_30c + 0x16c))(), cVar9 != '\0')))) {
                    local_600 = local_34c;
                    local_5fc = local_348;
                    local_5f8 = local_344 - 3.0;
                    V_snprintf(local_2b8,0x14,"%f");
                    NDebugOverlay::Text((Vector *)&local_600,local_2b8,false,4.0);
                  }
                  if ((local_570 & 0x800000) != 0) {
                    fVar31 = 1.0;
                    if ((local_570 & 0x20000000) != 0) {
                      fVar31 = (float)*(int *)(local_590 + 0x9d8);
                    }
                    local_37c = fVar31 * local_37c;
                    local_674 = local_37c * 0.5 + 32.0;
                    if ((local_30c != (CBaseAnimating *)0x0) &&
                       (local_30c == (CBaseAnimating *)g_WorldEntity)) {
                      local_674 = local_674 + 32.0;
                    }
                    RadiusDamage((CTakeDamageInfo *)&local_3b8,(Vector *)&local_34c,local_674,0,
                                 (CBaseEntity *)local_30c);
                    if (*(int *)(upgrade_show_explosive_ammo_radius._28_4_ + 0x30) != 0) {
                      NDebugOverlay::Sphere
                                ((Vector *)&local_34c,(QAngle *)&vec3_angle,local_674,0xff,0,0,0,
                                 false,1.0);
                    }
                  }
                  CBaseEntity::DispatchTraceAttack
                            ((CTakeDamageInfo *)local_30c,(Vector *)&local_3b8,
                             (CGameTrace *)&local_2fc);
                  ApplyMultiDamage();
                  if (((local_2bf != '\0') &&
                      (iVar18 = (**(code **)(*(int *)local_30c + 0x144))(), iVar18 != 0)) &&
                     (iVar18 = CBaseEntity::GetTeamNumber((CBaseEntity *)local_30c), iVar18 != 4)) {
                    (**(code **)(*(int *)local_594 + 0x8f0))();
                  }
                }
                if ((local_570 & 0x800000) != 0) {
                  local_2e4 = 3.4028235e+38;
LAB_0052b980:
                  if (local_2bf != '\0') {
LAB_0052be37:
                    local_48c = local_330;
                    local_4a8 = local_34c;
                    local_4a4 = local_348;
                    local_48a = local_32e;
                    local_48b = local_32f;
                    local_488 = local_32c;
                    local_4b4 = local_358;
                    local_484 = local_328;
                    local_4b0 = local_354;
                    local_4ac = local_350;
                    local_49c = local_340;
                    local_480 = local_324;
                    local_498 = local_33c;
                    local_494 = local_338;
                    local_490 = local_334;
                    local_47e = local_322;
                    local_470 = local_314;
                    local_47d = local_321;
                    local_2bf = '\0';
                    local_47c = local_320;
                    local_474 = local_318;
                    local_46c = local_310;
                    local_478 = local_31c;
                    local_46a = local_30e;
                    local_468 = local_30c;
                    local_464 = local_308;
                    local_4a0 = local_344;
                  }
                  goto LAB_0052ba81;
                }
                if (((local_690 == 1) && ((bool)(bVar5 ^ 1U))) && (!bVar4)) {
                  local_2e4 = 3.4028235e+38;
                  goto LAB_0052b980;
                }
                if (bVar25) {
                  piVar13 = (int *)(**(code **)(*(int *)local_30c + 0x144))();
                  iVar18 = (**(code **)(*piVar13 + 0x544))();
                  if (iVar18 != 8) goto LAB_0052b645;
LAB_0052c445:
                  local_2e4 = 3.4028235e+38;
                  goto LAB_0052b980;
                }
LAB_0052b645:
                if ((0.0 < local_568) && (local_568 < fVar30)) {
                  local_2e4 = 3.4028235e+38;
                  goto LAB_0052b980;
                }
                if (local_300 == 0) {
                  iVar18 = 3;
                  fVar31 = local_2fc * 12.0;
                  fVar32 = local_2f8 * 12.0;
                  fVar30 = local_2f4 * 12.0;
                  local_408 = local_348;
                  local_40c = local_34c;
                  local_404 = local_344;
                  do {
                    local_40c = (undefined **)((float)local_40c + fVar31);
                    local_408 = local_408 + fVar32;
                    local_404 = local_404 + fVar30;
                    uVar17 = (**(code **)(*enginetrace + 4))();
                    if ((uVar17 & 0x200400b) == 0) {
                      local_634 = &PTR_ShouldHitEntity_00c2ac08;
                      local_4c8 = 1;
                      local_508 = local_408;
                      local_504 = local_404;
                      local_4f8 = local_348 - local_408;
                      local_4d4 = 0;
                      local_4f4 = local_344 - local_404;
                      local_4d8 = 0;
                      local_4dc = 0;
                      local_4fc = (float)local_34c - (float)local_40c;
                      local_4cc = 0;
                      local_4e4 = 0;
                      local_4e8 = 0;
                      local_50c = local_40c;
                      local_4ec = 0;
                      local_4c7 = local_4f4 * local_4f4 + local_4f8 * local_4f8 +
                                  local_4fc * local_4fc != 0.0;
                      (**(code **)(*enginetrace + 0x14))();
                      if (local_3d5 == '\0') goto LAB_0052b830;
                      break;
                    }
                    iVar18 = iVar18 + -1;
                  } while (iVar18 != 0);
                  local_2e4 = 3.4028235e+38;
                  goto LAB_0052b980;
                }
                local_4d4 = 0;
                local_4c8 = 1;
                local_508 = local_2ec;
                local_504 = local_2e8;
                local_4f8 = local_348 - local_2ec;
                local_4d8 = 0;
                local_4f4 = local_344 - local_2e8;
                local_4dc = 0;
                local_4cc = 0;
                local_4fc = (float)local_34c - (float)local_2f0;
                local_4e4 = 0;
                local_4e8 = 0;
                local_50c = local_2f0;
                local_4ec = 0;
                local_4c7 = local_4f4 * local_4f4 + local_4f8 * local_4f8 + local_4fc * local_4fc !=
                            0.0;
                (**(code **)(*enginetrace + 0x10))();
                if (((!bVar25) && ((bool)(bVar5 ^ 1U))) &&
                   ((local_3d5 != '\0' ||
                    (576.0 <= (local_3fc - local_348) * (local_3fc - local_348) +
                              (local_400 - (float)local_34c) * (local_400 - (float)local_34c) +
                              (local_3f8 - local_344) * (local_3f8 - local_344))))) {
                  local_2e4 = 3.4028235e+38;
                  goto LAB_0052b980;
                }
LAB_0052b830:
                local_698 = local_3f8;
                local_694 = local_3fc;
                local_69c = local_400;
                local_2e4 = SQRT((local_400 - local_58c) * (local_400 - local_58c) +
                                 (local_3f8 - local_584) * (local_3f8 - local_584) +
                                 (local_3fc - local_588) * (local_3fc - local_588));
                if (!bVar4) {
                  iVar18 = (**(code **)(*physprops + 0x18))();
                  if ((((local_3dc & 2) == 0) || (*(ushort *)(iVar18 + 0x4c) != 0x59)) || (!bVar5))
                  {
                    if (local_690 == 1) goto LAB_0052c445;
                    if ((uVar21 == *(ushort *)(iVar18 + 0x4c)) &&
                       ((uVar21 == 0x4d || (uVar21 == 0x57)))) {
                      local_638 = local_638 + local_638;
                    }
                    if (local_638 * local_638 * local_56c <
                        (local_3f8 - local_344) * (local_3f8 - local_344) +
                        (local_400 - (float)local_34c) * (local_400 - (float)local_34c) +
                        (local_3fc - local_348) * (local_3fc - local_348)) {
                      local_2e4 = 3.4028235e+38;
                    }
                    goto LAB_0052b980;
                  }
                }
              }
              else {
                pIVar19 = (IHandleEntity *)(**(code **)(*(int *)local_30c + 0x144))();
                if (pIVar19 != (IHandleEntity *)0x0) {
                  CTraceFilterSimpleList::AddEntityToIgnore
                            ((CTraceFilterSimpleList *)local_5b8,pIVar19);
                }
                if (local_30c == (CBaseAnimating *)0x0) goto LAB_0052b0be;
                if ((((local_304 == 0xffffffff) ||
                     (puVar11 = g_pEntityList + (local_304 & 0xfff) * 0x10,
                     puVar11 == (undefined *)0xfffffffc)) ||
                    (*(uint *)(puVar11 + 8) != local_304 >> 0xc)) ||
                   (*(CBaseAnimating **)(puVar11 + 4) != local_30c)) {
                  DevWarning("Multi-trace error: encountered a recycled entity %p (%s)!\n");
                  goto LAB_0052af31;
                }
                    /* try { // try from 0052bd5e to 0052c995 has its CatchHandler @ 0052cc73 */
                cVar9 = (**(code **)(*(int *)local_30c + 0x16c))();
                if (cVar9 == '\0') goto LAB_0052b0be;
                iVar18 = CBaseEntity::GetTeamNumber((CBaseEntity *)local_30c);
                cVar9 = IsASurvivorTeam(iVar18);
                if (cVar9 == '\0') goto LAB_0052b0be;
                if ((local_2bf != '\0') || (*(int *)(BulletFFThroughWalls._28_4_ + 0x30) != 0)) {
                  if (local_2bc == '\0') goto LAB_0052b0be;
                  local_2e4 = 3.4028235e+38;
                  if (local_2bf == '\0') goto LAB_0052ba81;
                  goto LAB_0052be37;
                }
                local_2e4 = 3.4028235e+38;
LAB_0052ba81:
                local_438 = local_330;
                local_458 = local_350;
                local_454 = local_34c;
                local_424 = local_31c;
                local_41c = local_314;
                local_45c = local_354;
                local_450 = local_348;
                local_437 = local_32f;
                local_448 = local_340;
                local_434 = local_32c;
                local_428 = local_320;
                local_460 = local_358;
                local_430 = local_328;
                local_444 = local_33c;
                local_440 = local_338;
                local_42c = local_324;
                local_43c = local_334;
                local_436 = local_32e;
                local_42a = local_322;
                local_420 = local_318;
                local_429 = local_321;
                local_418 = local_310;
                local_690 = local_690 + -1;
                local_416 = local_30e;
                local_414 = local_30c;
                local_410 = local_308;
                local_44c = local_344;
                if (local_690 == 0) goto LAB_0052bbb7;
              }
LAB_0052af31:
              if (*(float *)(local_590 + 0x9d0) <= local_2e4) goto LAB_0052bbb7;
              uVar23 = CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                       ::NextInorder((CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                                      *)&local_3c,(ushort)uVar23);
              uVar23 = uVar23 & 0xffff;
            } while ((uVar23 != 0xffff) && (iVar14 = iVar14 + -1, iVar14 != -1));
          }
          local_6b0 = local_6b0 + -1;
          if (local_6b0 == 0) break;
        }
      }
LAB_0052bbb7:
      ComputeInterveningImpacts
                ((BulletGroupTraceInfo_t *)&local_594,(BulletTraceInfo_t *)&local_358,
                 (CGameTrace *)&local_460);
      if (*(int *)(sv_showdebugtracers._28_4_ + 0x30) != 0) {
        NDebugOverlay::VertArrow
                  ((Vector *)&local_580,(Vector *)&local_4a8,0.2,0xff,0,0,0xff,true,5.0);
      }
      local_2a4[0] = &PTR_EnumElement_00c341b0;
      CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
      ::RemoveAll((CUtlRBTree<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short,CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::CKeyLess,CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>>
                   *)&local_3c);
      local_28 = 0xffff;
      CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
      ::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
               *)&local_38);
      local_26 = 0xffff;
      CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
      ::Purge((CUtlMemory<UtlRBTreeNode_t<CUtlMap<float,CTraceBulletEntityEnumerator::BulletTrace_t,unsigned_short>::Node_t,unsigned_short>,unsigned_short>
               *)&local_38);
      local_40 = local_244;
      local_44 = 0;
      local_5b8[0] = &PTR_ShouldHitEntity_00c54590;
      local_59c = 0;
      CUtlMemory<IHandleEntity*,int>::Purge((CUtlMemory<IHandleEntity*,int> *)local_5a8);
      local_598 = local_5a8[0];
      CUtlMemory<IHandleEntity*,int>::Purge((CUtlMemory<IHandleEntity*,int> *)local_5a8);
      if (local_6b4 < 1) break;
      local_6b4 = local_6b4 + -1;
      fVar29 = *(float *)(iVar8 + 0xc30);
      bVar5 = false;
    } while( true );
  }
  if (ThePlayerReporter != (PlayerReporter *)0x0) {
                    /* try { // try from 0052bca8 to 0052bcac has its CatchHandler @ 0052cd2a */
    PlayerReporter::ApplyShotResult(ThePlayerReporter,param_1);
  }
  (**(code **)(*piVar12 + 0x6c))();
  local_5dc[0] = &PTR_ShouldHitEntity_00c54590;
  local_5c0 = 0;
  CUtlMemory<IHandleEntity*,int>::Purge((CUtlMemory<IHandleEntity*,int> *)local_5cc);
  local_5bc = local_5cc[0];
  CUtlMemory<IHandleEntity*,int>::Purge((CUtlMemory<IHandleEntity*,int> *)local_5cc);
LAB_0052bcf1:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    *(undefined **)(puVar22 + -4) = &UNK_0052cd66;
    __stack_chk_fail();
  }
  return;
}

SourceMod gamedata

paste into addons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)

Just a Signatures{} block, ready to drop into a gamedata file. Wire it up in your plugin however you like - SDKCall, DHooks, raw memory ops, or anything else.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)