SurvivorAttack::FireWeapon
0x00919360 · 6257 bytes · __thiscall
_ZN14SurvivorAttack10FireWeaponEP11SurvivorBot
Decompiled
undefined (2 params)
/* WARNING: Removing unreachable block (ram,0x00919d36) */
/* WARNING: Removing unreachable block (ram,0x00919bc1) */
/* WARNING: Removing unreachable block (ram,0x00919b34) */
/* WARNING: Removing unreachable block (ram,0x00919ab0) */
/* WARNING: Removing unreachable block (ram,0x0091ac14) */
/* WARNING: Removing unreachable block (ram,0x0091ab91) */
/* WARNING: Removing unreachable block (ram,0x0091ac1c) */
/* WARNING: Removing unreachable block (ram,0x0091ac27) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* SurvivorAttack::FireWeapon(SurvivorBot*) */
undefined4 __thiscall SurvivorAttack::FireWeapon(SurvivorAttack *this,SurvivorBot *param_1)
{
SurvivorAttack *pSVar1;
uint *puVar2;
float fVar3;
float fVar4;
SurvivorAttack SVar5;
code *pcVar6;
char cVar7;
bool bVar8;
SurvivorTeamSituation *this_00;
CBaseEntity *pCVar9;
int iVar10;
int iVar11;
float *pfVar12;
int *piVar13;
float *pfVar14;
int *piVar15;
int iVar16;
uint uVar17;
int iVar18;
undefined *puVar19;
double *pdVar20;
double *pdVar21;
undefined4 uVar22;
bool bVar23;
longdouble lVar24;
float fVar25;
float fVar26;
double dVar27;
undefined4 uStack_154;
float local_11c;
char local_115;
int local_110;
float local_10c;
float local_100;
float local_e0;
float local_dc;
float local_d8;
float local_d4;
float local_d0;
float local_cc;
uint local_c8;
uint local_c4;
uint local_c0;
uint local_bc;
uint local_b8;
uint local_b4;
float local_b0;
float local_ac;
float local_a8;
undefined1 local_a4 [12];
undefined **local_98;
float local_94;
float local_90;
int *local_8c;
float local_88;
float local_84;
undefined1 local_80 [16];
float local_70;
float local_6c;
float local_68;
int *local_24;
if (_towlower == 0) {
iVar18 = 0;
}
else {
(**(code **)(_towlower + 0x50))();
iVar18 = _towlower;
}
iVar10 = _DAT_0105db00;
/* try { // try from 009195de to 0091963e has its CatchHandler @ 0091ac0a */
if (((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) &&
(iVar11 = ThreadGetCurrentId(), iVar10 == iVar11)) {
if ((char *)*_DAT_0105d15c != "SurvivorAttack::FireWeapon") {
_DAT_0105d15c =
(int *)CVProfNode::GetSubNode((char *)_DAT_0105d15c,0xd00a3d,(char *)0x0,0xd00a3d);
}
puVar2 = (uint *)(_DAT_0105d1e8 + 4 + _DAT_0105d15c[0x1c] * 8);
*puVar2 = *puVar2 | 4;
CVProfNode::EnterScope();
DAT_0105d158 = '\0';
}
/* try { // try from 00919431 to 00919563 has its CatchHandler @ 0091ac08 */
this_00 = (SurvivorTeamSituation *)SurvivorBot::GetTeamSituation(param_1);
pdVar20 = (double *)&stack0xfffffeb4;
if (((*(int *)(SurvivorBotDontShoot._28_4_ + 0x30) == 0) &&
(((uVar17 = *(uint *)(param_1 + 0x2e28), uVar17 == 0xffffffff ||
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10, puVar19 == (undefined *)0xfffffffc)) ||
((*(uint *)(puVar19 + 8) != uVar17 >> 0xc ||
(pdVar20 = (double *)&stack0xfffffeb4, *(int *)(puVar19 + 4) == 0)))))) &&
((((cVar7 = CTerrorGameRules::HasPlayerControlledZombies(), cVar7 == '\0' ||
(uVar17 = *(uint *)(param_1 + 0x33c4), uVar17 == 0xffffffff)) ||
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10, puVar19 == (undefined *)0xfffffffc)) ||
((*(uint *)(puVar19 + 8) != uVar17 >> 0xc ||
(pdVar20 = (double *)&stack0xfffffeb4, *(int *)(puVar19 + 4) == 0)))))) {
pCVar9 = (CBaseEntity *)SelectTarget(this,param_1);
if ((pCVar9 == (CBaseEntity *)0x0) ||
(cVar7 = (**(code **)(*(int *)pCVar9 + 300))(), cVar7 == '\0')) {
/* try { // try from 00919681 to 009196bb has its CatchHandler @ 0091ac08 */
cVar7 = INextBot::IsDebugging((INextBot *)(param_1 + 0x4028),1);
pdVar20 = (double *)&stack0xfffffeb4;
if (cVar7 != '\0') {
(**(code **)(*(int *)param_1 + 0x9b8))();
DevMsg("%3.2f: %s: NOT FIRING because target is dead/gone\n");
pdVar20 = (double *)&stack0xfffffeb4;
}
}
else {
iVar10 = CTerrorPlayer::ClassifyZombie(pCVar9);
if (iVar10 == 7) {
piVar13 = (int *)__dynamic_cast();
piVar13 = (int *)(**(code **)(*piVar13 + 0x594))();
cVar7 = (**(code **)(*piVar13 + 0x114))();
if (cVar7 != '\0') goto LAB_00919760;
cVar7 = SurvivorTeamSituation::IsSurvivingTeamAllBots(this_00);
if (cVar7 != '\0') {
/* try { // try from 00919715 to 0091a1ba has its CatchHandler @ 0091ac08 */
piVar13 = (int *)(**(code **)(*(int *)param_1 + 0x9a4))();
lVar24 = (longdouble)(**(code **)(*piVar13 + 0xd0))();
if ((10.0 <= (float)lVar24) && (*(int *)(TheDirector + 0x1bc) < 2)) goto LAB_00919760;
}
cVar7 = INextBot::IsDebugging((INextBot *)(param_1 + 0x4028),1);
pdVar20 = (double *)&stack0xfffffeb4;
if (cVar7 != '\0') {
(**(code **)(*(int *)param_1 + 0x9b8))();
DevMsg("%3.2f: %s: NOT FIRING because target Witch is calm\n");
pdVar20 = (double *)&stack0xfffffeb4;
}
}
else if ((*(int *)(TheDirector + 0x1bc) < 1) ||
(cVar7 = SurvivorBot::IsAnyWitchCloserThan
(param_1,*(float *)(z_witch_wander_hear_radius._28_4_ + 0x2c) +
24.0), cVar7 == '\0')) {
LAB_00919760:
(**(code **)(*(int *)param_1 + 0x234))();
uStack_154 = 0x919783;
pfVar12 = (float *)(**(code **)(*(int *)pCVar9 + 0x288))();
local_d4 = *pfVar12 - local_e0;
local_d0 = pfVar12[1] - local_dc;
local_cc = pfVar12[2] - local_d8;
pdVar20 = (double *)&stack0xfffffeb0;
if (iVar10 == 0) {
uStack_154 = 0x9199fe;
cVar7 = CDirectorChallengeMode::HeadshotOnly
(*(CDirectorChallengeMode **)(TheDirector + 0x648));
pdVar20 = (double *)&stack0xfffffeb0;
if (cVar7 != '\0') {
uStack_154 = 0x919a18;
(**(code **)(*(int *)pCVar9 + 0x234))();
pdVar20 = (double *)&uStack_154;
local_d0 = local_6c - local_dc;
local_cc = local_68 - local_d8;
local_d4 = local_70 - local_e0;
}
}
*(float **)pdVar20 = &local_d4;
*(undefined4 *)((int)pdVar20 + -4) = 0x919801;
lVar24 = (longdouble)VectorNormalize(*(Vector **)pdVar20);
local_100 = (float)lVar24;
if (80.0 < local_100) {
iVar11 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = 10;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x908);
*(undefined4 *)((int)pdVar20 + -4) = 0x9199c3;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
iVar11 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = 0xb;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x908);
*(undefined4 *)((int)pdVar20 + -4) = 0x9199de;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') goto LAB_0091981c;
}
}
else {
LAB_0091981c:
local_10c = 0.3;
if ((500.0 <= local_100) && (local_10c = 1.0, local_100 <= 3000.0)) {
local_10c = (local_100 + -500.0) * 0.00027999998 + 0.3;
}
if (local_100 < 150.0) {
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x9ac);
*(undefined4 *)((int)pdVar20 + -4) = 0x919a6a;
piVar13 = (int *)(*pcVar6)();
iVar11 = *piVar13;
*(CBaseEntity **)((int)pdVar20 + 4) = pCVar9;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar11 + 0xe4);
*(undefined4 *)((int)pdVar20 + -4) = 0x919a79;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') goto LAB_00919897;
bVar8 = true;
LAB_00919a88:
if (AllocTempVector()::s_vecTemp == '\0') {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x919ef0;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x919f04;
__cxa_guard_release();
}
}
if (AllocTempVector()::s_nIndex == '\0') {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
*(undefined4 *)((int)pdVar20 + -4) = 0x919ec1;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
AllocTempVector()::s_nIndex = 0;
*(undefined4 *)((int)pdVar20 + -4) = 0x919edf;
__cxa_guard_release();
}
}
AllocTempVector()::s_nIndex = AllocTempVector()::s_nIndex + 0x10001 & 0x7f;
LOCK();
UNLOCK();
fVar25 = *(float *)(pCVar9 + 0x1a8);
iVar11 = AllocTempVector()::s_nIndex * 0xc;
bVar23 = AllocTempVector()::s_vecTemp == '\0';
fVar26 = *(float *)(pCVar9 + 0x19c);
*(float *)(AllocTempVector()::s_vecTemp + iVar11) = fVar25 - fVar26;
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 4) =
*(float *)(pCVar9 + 0x1ac) - *(float *)(pCVar9 + 0x1a0);
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 8) =
*(float *)(pCVar9 + 0x1b0) - *(float *)(pCVar9 + 0x1a4);
if (bVar23) {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x919e8c;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x919ea8;
__cxa_guard_release();
}
}
if (AllocTempVector()::s_nIndex == '\0') {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
*(undefined4 *)((int)pdVar20 + -4) = 0x919f1d;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
AllocTempVector()::s_nIndex = 0;
*(undefined4 *)((int)pdVar20 + -4) = 0x919f43;
__cxa_guard_release();
}
}
AllocTempVector()::s_nIndex = AllocTempVector()::s_nIndex + 0x10001 & 0x7f;
LOCK();
UNLOCK();
iVar11 = AllocTempVector()::s_nIndex * 0xc;
*(float *)(AllocTempVector()::s_vecTemp + iVar11) =
*(float *)(pCVar9 + 0x1a8) - *(float *)(pCVar9 + 0x19c);
fVar3 = *(float *)(pCVar9 + 0x1ac);
fVar4 = *(float *)(pCVar9 + 0x1a0);
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 4) = fVar3 - fVar4;
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 8) =
*(float *)(pCVar9 + 0x1b0) - *(float *)(pCVar9 + 0x1a4);
if (fVar25 - fVar26 <= fVar3 - fVar4) {
if (AllocTempVector()::s_vecTemp == '\0') {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a44c;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a460;
__cxa_guard_release();
}
}
if (AllocTempVector()::s_nIndex == '\0') {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a41d;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
AllocTempVector()::s_nIndex = 0;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a43b;
__cxa_guard_release();
}
}
AllocTempVector()::s_nIndex = AllocTempVector()::s_nIndex + 0x10001 & 0x7f;
LOCK();
UNLOCK();
iVar11 = AllocTempVector()::s_nIndex * 0xc;
*(float *)(AllocTempVector()::s_vecTemp + iVar11) =
*(float *)(pCVar9 + 0x1a8) - *(float *)(pCVar9 + 0x19c);
fVar25 = *(float *)(pCVar9 + 0x1ac) - *(float *)(pCVar9 + 0x1a0);
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 4) = fVar25;
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 8) =
*(float *)(pCVar9 + 0x1b0) - *(float *)(pCVar9 + 0x1a4);
}
else {
if (AllocTempVector()::s_vecTemp == '\0') {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a4a0;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_vecTemp;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a4b4;
__cxa_guard_release();
}
}
if (AllocTempVector()::s_nIndex == '\0') {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a471;
iVar11 = __cxa_guard_acquire();
if (iVar11 != 0) {
*(char **)pdVar20 = &AllocTempVector()::s_nIndex;
AllocTempVector()::s_nIndex = 0;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a48f;
__cxa_guard_release();
}
}
AllocTempVector()::s_nIndex = AllocTempVector()::s_nIndex + 0x10001 & 0x7f;
LOCK();
UNLOCK();
iVar11 = AllocTempVector()::s_nIndex * 0xc;
fVar25 = *(float *)(pCVar9 + 0x1a8) - *(float *)(pCVar9 + 0x19c);
*(float *)(AllocTempVector()::s_vecTemp + iVar11) = fVar25;
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 4) =
*(float *)(pCVar9 + 0x1ac) - *(float *)(pCVar9 + 0x1a0);
*(float *)(AllocTempVector()::s_vecTemp + iVar11 + 8) =
*(float *)(pCVar9 + 0x1b0) - *(float *)(pCVar9 + 0x1a4);
}
*pdVar20 = (double)(fVar25 / local_100);
*(undefined4 *)((int)pdVar20 + -4) = 0x919c35;
dVar27 = atan(*pdVar20);
*pdVar20 = dVar27;
*(undefined4 *)((int)pdVar20 + -4) = 0x919c3d;
dVar27 = cos(*pdVar20);
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x9a4);
*(undefined4 *)((int)pdVar20 + -4) = 0x919c66;
piVar13 = (int *)(*pcVar6)();
iVar11 = *piVar13;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar11 + 0xbc);
*(undefined4 *)((int)pdVar20 + -4) = 0x919c71;
pfVar12 = (float *)(*pcVar6)();
if (((float)dVar27 <=
pfVar12[1] * local_d0 + *pfVar12 * local_d4 + pfVar12[2] * local_cc) || (bVar8)) {
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x7e8);
*(undefined4 *)((int)pdVar20 + -4) = 0x919da2;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
*(int *)((int)pdVar20 + 0xc) = 0;
*(int *)(pdVar20 + 1) = 0;
*(SurvivorBot **)((int)pdVar20 + 4) = param_1;
*(undefined1 **)pdVar20 = local_80;
*(undefined4 *)((int)pdVar20 + -4) = 0x919f6f;
CTraceFilterSimple::CTraceFilterSimple
(*(CTraceFilterSimple **)pdVar20,*(IHandleEntity **)((int)pdVar20 + 4),
*(int *)(pdVar20 + 1),
*(_func_bool_IHandleEntity_ptr_int **)((int)pdVar20 + 0xc));
iVar11 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = 3;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x908);
*(undefined4 *)((int)pdVar20 + -4) = 0x919f82;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
iVar11 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = 4;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x908);
*(undefined4 *)((int)pdVar20 + -4) = 0x919f9d;
cVar7 = (*pcVar6)();
local_bc = 0x40000000;
if ((cVar7 != '\0') && (local_bc = 0x3f800000, local_100 <= 2000.0)) {
local_100 = 2000.0;
}
}
else {
local_bc = 0x40800000;
}
*(int *)((int)pdVar20 + 0xc) = 0;
*(int *)(pdVar20 + 1) = 0;
local_c8 = local_bc ^ 0x80000000;
*(float **)((int)pdVar20 + 4) = &local_b0;
*(SurvivorBot **)pdVar20 = param_1;
local_c4 = local_c8;
local_c0 = local_c8;
local_b8 = local_bc;
local_b4 = local_bc;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a026;
CBasePlayer::EyeVectors
(*(CBasePlayer **)pdVar20,*(Vector **)((int)pdVar20 + 4),
*(Vector **)(pdVar20 + 1),*(Vector **)((int)pdVar20 + 0xc));
fVar25 = local_b0 * local_100;
fVar26 = local_ac * local_100;
iVar11 = *(int *)param_1;
*(SurvivorBot **)((int)pdVar20 + 4) = param_1;
local_100 = local_a8 * local_100;
*(undefined ****)pdVar20 = &local_98;
pcVar6 = *(code **)(iVar11 + 0x234);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a07f;
(*pcVar6)();
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
*(undefined1 **)((int)pdVar20 + -4) = local_a4;
local_8c = (int *)(fVar25 + (float)local_98);
local_84 = local_100 + local_90;
local_88 = fVar26 + local_94;
pcVar6 = *(code **)(iVar11 + 0x234);
*(undefined4 *)(pdVar20 + -1) = 0x91a0dc;
(*pcVar6)();
pdVar21 = pdVar20 + -1;
*(float **)(pdVar20 + 2) = &local_70;
*(undefined1 **)((int)pdVar20 + 0xc) = local_80;
*(uint **)((int)pdVar20 + 4) = &local_bc;
*(uint **)pdVar20 = &local_c8;
*(int ***)((int)pdVar20 + -4) = &local_8c;
*(int *)(pdVar20 + 1) = 0x46004003;
*(undefined1 **)(pdVar20 + -1) = local_a4;
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91a121;
UTIL_TraceHull(*(Vector **)(pdVar20 + -1),*(Vector **)((int)pdVar20 + -4),
*(Vector **)pdVar20,*(Vector **)((int)pdVar20 + 4),
*(uint *)(pdVar20 + 1),*(ITraceFilter **)((int)pdVar20 + 0xc),
*(CGameTrace **)(pdVar20 + 2));
if (*(int *)(sb_allow_shoot_through_survivors._28_4_ + 0x30) == 0) {
*(float **)(pdVar20 + -1) = &local_70;
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91a138;
cVar7 = CGameTrace::DidHitNonWorldEntity(*(CGameTrace **)(pdVar20 + -1));
if (cVar7 == '\0') goto LAB_0091a140;
iVar11 = *local_24;
*(int **)(pdVar20 + -1) = local_24;
/* try { // try from 0091aa16 to 0091aa6a has its CatchHandler @ 0091ac08 */
pcVar6 = *(code **)(iVar11 + 0x16c);
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91aa1c;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') goto LAB_0091a140;
iVar11 = *local_24;
*(int **)(pdVar20 + -1) = local_24;
pcVar6 = *(code **)(iVar11 + 300);
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91aa32;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') goto LAB_0091a140;
*(int **)(pdVar20 + -1) = local_24;
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91aa45;
iVar11 = CBaseEntity::GetTeamNumber(*(CBaseEntity **)(pdVar20 + -1));
*(int *)(pdVar20 + -1) = iVar11;
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91aa4d;
cVar7 = IsASurvivorTeam(iVar11);
if (cVar7 == '\0') goto LAB_0091a140;
iVar11 = *local_24;
*(int **)(pdVar20 + -1) = local_24;
pcVar6 = *(code **)(iVar11 + 0x7e8);
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91aa6b;
cVar7 = (*pcVar6)();
if ((((((cVar7 != '\0') && (*(char *)((int)local_24 + 0x39f1) == '\0')) &&
((char)local_24[0xcf7] == '\0')) ||
(((uVar17 = local_24[0xfb8], uVar17 != 0xffffffff &&
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10,
puVar19 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar19 + 8) == uVar17 >> 0xc && (*(int *)(puVar19 + 4) != 0))))
)) || (((uVar17 = local_24[0xf92], uVar17 != 0xffffffff &&
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10,
puVar19 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar19 + 8) == uVar17 >> 0xc &&
(*(int *)(puVar19 + 4) != 0)))))) ||
(((((uVar17 = local_24[0xf9a], uVar17 != 0xffffffff &&
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10,
puVar19 != (undefined *)0xfffffffc)) &&
(*(uint *)(puVar19 + 8) == uVar17 >> 0xc)) && (*(int *)(puVar19 + 4) != 0))
|| (((uVar17 = local_24[0xcf1], uVar17 != 0xffffffff &&
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10,
puVar19 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar19 + 8) == uVar17 >> 0xc && (*(int *)(puVar19 + 4) != 0))
)))))) goto LAB_0091a140;
local_115 = *(char *)((int)local_24 + 0x39f1);
}
else {
LAB_0091a140:
local_115 = '\x01';
}
iVar11 = *(int *)param_1;
*(int *)((int)pdVar20 + -4) = 3;
*(SurvivorBot **)(pdVar20 + -1) = param_1;
pcVar6 = *(code **)(iVar11 + 0x908);
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91a15a;
cVar7 = (*pcVar6)();
local_11c = 0.8;
if (cVar7 != '\0') {
local_11c = 0.5;
}
*(int *)(pdVar20 + -1) = TheDirector;
*(undefined4 *)((int)pdVar20 + -0xc) = 0x91a18b;
piVar13 = (int *)CDirector::GetForbiddenTargets(*(CDirector **)(pdVar20 + -1));
if (piVar13[3] < 1) {
LAB_0091a522:
local_100._0_1_ = local_115;
pdVar20 = pdVar21;
}
else if (local_115 == '\0') {
local_100._0_1_ = '\0';
pdVar20 = pdVar20 + -1;
}
else {
local_110 = 0;
pdVar21 = pdVar20 + -1;
do {
while (((uVar17 = *(uint *)(*piVar13 + local_110 * 4), uVar17 == 0xffffffff ||
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10,
puVar19 == (undefined *)0xfffffffc)) ||
((*(uint *)(puVar19 + 8) != uVar17 >> 0xc ||
(piVar15 = *(int **)(puVar19 + 4), piVar15 == (int *)0x0))))) {
LAB_0091a50a:
local_110 = local_110 + 1;
if (piVar13[3] <= local_110) goto LAB_0091a522;
}
iVar11 = *(int *)(param_1 + 0x4028);
*(float *)(pdVar21 + 1) = *(float *)(car_alarm_distance._28_4_ + 0x2c) * 1.1;
*(int **)((int)pdVar21 + 4) = piVar15;
*(SurvivorBot **)pdVar21 = param_1 + 0x4028;
/* try { // try from 0091a7db to 0091a9c2 has its CatchHandler @ 0091ac08 */
pcVar6 = *(code **)(iVar11 + 0x114);
*(undefined4 *)((int)pdVar21 + -4) = 0x91a7e1;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') goto LAB_0091a50a;
iVar11 = *(int *)param_1;
*(SurvivorBot **)((int)pdVar21 + 4) = param_1;
*(int ***)pdVar21 = &local_8c;
pcVar6 = *(code **)(iVar11 + 0x234);
*(undefined4 *)((int)pdVar21 + -4) = 0x91a7fe;
(*pcVar6)();
iVar11 = *piVar15;
*(int **)((int)pdVar21 + -4) = piVar15;
pcVar6 = *(code **)(iVar11 + 0x288);
*(undefined4 *)(pdVar21 + -1) = 0x91a812;
pfVar12 = (float *)(*pcVar6)();
local_98 = (undefined **)(*pfVar12 - (float)local_8c);
local_94 = pfVar12[1] - local_88;
fVar25 = pfVar12[2];
*(undefined ****)((int)pdVar21 + -4) = &local_98;
local_90 = fVar25 - local_84;
*(undefined4 *)(pdVar21 + -1) = 0x91a85b;
VectorNormalize(*(Vector **)((int)pdVar21 + -4));
local_100._0_1_ = local_115;
if (local_11c <
local_94 * local_ac + (float)local_98 * local_b0 + local_90 * local_a8) {
*(uint *)(pdVar21 + 1) = 0x461c4000;
*(uint *)((int)pdVar21 + 4) = 5;
*(int **)pdVar21 = piVar15;
*(undefined4 *)((int)pdVar21 + -4) = TheNavMesh;
*(undefined4 *)(pdVar21 + -1) = 0x91a900;
iVar16 = CNavMesh::GetNearestNavArea
(*(CNavMesh **)((int)pdVar21 + -4),*(CBaseEntity **)pdVar21
,*(uint *)((int)pdVar21 + 4),*(float *)(pdVar21 + 1));
iVar11 = *(int *)param_1;
*(SurvivorBot **)((int)pdVar21 + -4) = param_1;
pcVar6 = *(code **)(iVar11 + 0x52c);
*(undefined4 *)(pdVar21 + -1) = 0x91a911;
iVar11 = (*pcVar6)();
if ((iVar11 != 0) && (iVar16 != 0)) {
*(uint *)((int)pdVar21 + 4) = 0;
*(int *)((int)pdVar21 + -4) = iVar11;
*(int *)pdVar21 = iVar16;
*(undefined4 *)(pdVar21 + -1) = 0x91a93d;
cVar7 = TerrorNavArea::IsPotentiallyVisible
(*(TerrorNavArea **)((int)pdVar21 + -4),
*(TerrorNavArea **)pdVar21,*(bool *)((int)pdVar21 + 4));
if (cVar7 != '\0') {
*(undefined4 *)pdVar21 = 1;
*(SurvivorBot **)((int)pdVar21 + -4) = param_1 + 0x4028;
*(undefined4 *)(pdVar21 + -1) = 0x91a95b;
cVar7 = INextBot::IsDebugging
(*(INextBot **)((int)pdVar21 + -4),*(uint *)pdVar21);
if (cVar7 != '\0') {
iVar11 = *(int *)param_1;
*(SurvivorBot **)((int)pdVar21 + -4) = param_1;
pcVar6 = *(code **)(iVar11 + 0x9b8);
*(undefined4 *)(pdVar21 + -1) = 0x91a976;
uVar17 = (*pcVar6)();
*(uint *)(pdVar21 + 1) = uVar17;
fVar25 = *(float *)(gpGlobals + 0xc);
*(char **)((int)pdVar21 + -4) =
"%3.2f: %s: NOT FIRING because we might hit the car alarm\n";
*pdVar21 = (double)fVar25;
*(undefined4 *)(pdVar21 + -1) = 0x91a996;
DevMsg(*(char **)((int)pdVar21 + -4));
}
local_100._0_1_ = '\0';
}
}
}
local_110 = local_110 + 1;
pdVar20 = (double *)((int)pdVar21 + -4);
} while ((local_110 < piVar13[3]) &&
(pdVar20 = (double *)((int)pdVar21 + -4),
pdVar21 = (double *)((int)pdVar21 + -4), local_100._0_1_ != '\0'));
}
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x550);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a1bb;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
local_98 = &PTR_IsAllowed_00d00f08;
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
/* try { // try from 0091a6b1 to 0091a78f has its CatchHandler @ 0091ac0e */
pcVar6 = *(code **)(iVar11 + 0x9ac);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a6b7;
piVar13 = (int *)(*pcVar6)();
iVar11 = *piVar13;
*(int **)pdVar20 = piVar13;
*(undefined ****)((int)pdVar20 + 4) = &local_98;
pcVar6 = *(code **)(iVar11 + 0xc4);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a6cc;
piVar13 = (int *)(*pcVar6)();
if (piVar13 == (int *)0x0) goto LAB_0091a1c3;
iVar11 = *piVar13;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar11 + 0x16c);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a6e7;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') goto LAB_0091a1c3;
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x9ac);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a6fa;
piVar15 = (int *)(*pcVar6)();
iVar11 = *piVar15;
*(int **)pdVar20 = piVar15;
*(int **)((int)pdVar20 + 4) = piVar13;
*(float *)((int)pdVar20 + 8) = local_11c;
pcVar6 = *(code **)(iVar11 + 0x100);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a71d;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') goto LAB_0091a1c3;
local_8c = piVar13;
*(int ***)pdVar20 = &local_8c;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a73f;
bVar8 = ForEachSurvivor<AnyoneTooCloseToBoomerCheck>
(*(AnyoneTooCloseToBoomerCheck **)pdVar20);
if (bVar8) goto LAB_0091a1c3;
*(int *)((int)pdVar20 + 4) = 1;
*(SurvivorBot **)pdVar20 = param_1 + 0x4028;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a75d;
cVar7 = INextBot::IsDebugging(*(INextBot **)pdVar20,*(uint *)((int)pdVar20 + 4));
if (cVar7 != '\0') {
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x9b8);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a770;
iVar11 = (*pcVar6)();
*(int *)((int)pdVar20 + 0xc) = iVar11;
fVar25 = *(float *)(gpGlobals + 0xc);
*(char **)pdVar20 =
"%3.2f: %s: NOT FIRING because we would pop the Boomer on a teammate\n";
*(double *)((int)pdVar20 + 4) = (double)fVar25;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a790;
DevMsg(*(char **)pdVar20);
}
}
else {
LAB_0091a1c3:
if (local_100._0_1_ != '\0') goto LAB_00919daa;
}
}
else {
LAB_00919daa:
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x9ac);
*(undefined4 *)((int)pdVar20 + -4) = 0x919db5;
piVar13 = (int *)(*pcVar6)();
iVar11 = *piVar13;
*(int *)((int)pdVar20 + 8) = 0;
*(CBaseEntity **)((int)pdVar20 + 4) = pCVar9;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar11 + 0xf8);
*(undefined4 *)((int)pdVar20 + -4) = 0x919dcc;
uVar22 = (*pcVar6)();
if ((char)uVar22 != '\0') {
iVar10 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = 1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x908);
*(undefined4 *)((int)pdVar20 + -4) = 0x919de9;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
iVar10 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = 2;
*(SurvivorBot **)pdVar20 = param_1;
/* try { // try from 0091a5e1 to 0091a69f has its CatchHandler @ 0091ac08 */
pcVar6 = *(code **)(iVar10 + 0x908);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a5e7;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
iVar10 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = 0xb;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x908);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a602;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
if (this[0x32] == (SurvivorAttack)0x0) {
iVar10 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = -0x40800000;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x938);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a65b;
(*pcVar6)();
*(int *)((int)pdVar20 + 4) = 1;
*(SurvivorBot **)pdVar20 = param_1 + 0x4028;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a671;
cVar7 = INextBot::IsDebugging
(*(INextBot **)pdVar20,*(uint *)((int)pdVar20 + 4));
if (cVar7 != '\0') {
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x9b8);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a680;
iVar10 = (*pcVar6)();
*(int *)((int)pdVar20 + 0xc) = iVar10;
fVar25 = *(float *)(gpGlobals + 0xc);
*(char **)pdVar20 = "%3.2f: %s: FIRE!\n";
*(double *)((int)pdVar20 + 4) = (double)fVar25;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a6a0;
DevMsg(*(char **)pdVar20);
}
}
else {
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x93c);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a61e;
(*pcVar6)();
*(int *)((int)pdVar20 + 4) = 1;
*(SurvivorBot **)pdVar20 = param_1 + 0x4028;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a634;
cVar7 = INextBot::IsDebugging
(*(INextBot **)pdVar20,*(uint *)((int)pdVar20 + 4));
if (cVar7 != '\0') {
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x9b8);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a9a3;
iVar10 = (*pcVar6)();
*(int *)((int)pdVar20 + 0xc) = iVar10;
fVar25 = *(float *)(gpGlobals + 0xc);
*(char **)pdVar20 = "%3.2f: %s: Releasing trigger\n";
*(double *)((int)pdVar20 + 4) = (double)fVar25;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a9c3;
DevMsg(*(char **)pdVar20);
}
}
this[0x32] = (SurvivorAttack)((byte)this[0x32] ^ 1);
goto LAB_0091956a;
}
}
}
pcVar6 = *(code **)(*(int *)param_1 + 0x938);
*(int *)((int)pdVar20 + 4) = 0x3e19999a;
*(undefined4 *)pdVar20 = 0x3dcccccd;
*(undefined4 *)((int)pdVar20 + -4) = 0x919e0d;
lVar24 = (longdouble)RandomFloat();
*(SurvivorBot **)pdVar20 = param_1;
*(float *)((int)pdVar20 + 4) = (float)lVar24;
*(undefined4 *)((int)pdVar20 + -4) = 0x919e26;
(*pcVar6)();
*(int *)((int)pdVar20 + 4) = 1;
*(SurvivorBot **)pdVar20 = param_1 + 0x4028;
*(undefined4 *)((int)pdVar20 + -4) = 0x919e3c;
cVar7 = INextBot::IsDebugging(*(INextBot **)pdVar20,*(uint *)((int)pdVar20 + 4));
if (cVar7 != '\0') {
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x9b8);
*(undefined4 *)((int)pdVar20 + -4) = 0x919e4f;
iVar10 = (*pcVar6)();
*(int *)((int)pdVar20 + 0xc) = iVar10;
fVar25 = *(float *)(gpGlobals + 0xc);
*(char **)pdVar20 = "%3.2f: %s: CONTINUOUS FIRE!\n";
*(double *)((int)pdVar20 + 4) = (double)fVar25;
*(undefined4 *)((int)pdVar20 + -4) = 0x919e6f;
DevMsg(*(char **)pdVar20);
}
goto LAB_0091956a;
}
}
if ((((iVar10 != 0) || (*(int *)(SurvivorBotSidestepForHorde._28_4_ + 0x30) != 0)) ||
((uVar17 = *(uint *)(this_00 + 0x10), uVar17 != 0xffffffff &&
(((puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10,
puVar19 != (undefined *)0xfffffffc && (*(uint *)(puVar19 + 8) == uVar17 >> 0xc)
) && (*(int *)(puVar19 + 4) != 0)))))) ||
(((uVar17 = *(uint *)(this_00 + 8), uVar17 != 0xffffffff &&
(puVar19 = g_pEntityList + (uVar17 & 0xfff) * 0x10,
puVar19 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar19 + 8) == uVar17 >> 0xc && (*(int *)(puVar19 + 4) != 0)))))) {
pSVar1 = this + 0x54;
*(SurvivorAttack **)pdVar20 = pSVar1;
/* try { // try from 0091a256 to 0091a3ca has its CatchHandler @ 0091abd8 */
*(undefined4 *)((int)pdVar20 + -4) = 0x91a25b;
lVar24 = (longdouble)CountdownTimer::Now();
if (*(float *)(this + 0x5c) <= (float)lVar24) {
*(int *)((int)pdVar20 + 4) = 100;
*(undefined4 *)pdVar20 = 0;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a286;
iVar10 = RandomInt();
this[0x60] = (SurvivorAttack)(iVar10 < 0x32);
*(int *)((int)pdVar20 + 4) = 0x40400000;
*(undefined4 *)pdVar20 = 0x40000000;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a2a4;
lVar24 = (longdouble)RandomFloat();
fVar25 = (float)lVar24;
*(SurvivorAttack **)pdVar20 = pSVar1;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a2b2;
lVar24 = (longdouble)CountdownTimer::Now();
if ((float)lVar24 + fVar25 != *(float *)(this + 0x5c)) {
iVar10 = *(int *)(this + 0x54);
*(SurvivorAttack **)pdVar20 = pSVar1;
*(SurvivorAttack **)((int)pdVar20 + 4) = this + 0x5c;
pcVar6 = *(code **)(iVar10 + 4);
*(undefined4 *)((int)pdVar20 + -4) = 0x91aa03;
(*pcVar6)();
*(float *)(this + 0x5c) = (float)lVar24 + fVar25;
}
if (fVar25 != *(float *)(this + 0x58)) {
iVar10 = *(int *)(this + 0x54);
*(SurvivorAttack **)pdVar20 = pSVar1;
*(SurvivorAttack **)((int)pdVar20 + 4) = this + 0x58;
/* try { // try from 0091a9d8 to 0091aa02 has its CatchHandler @ 0091abd8 */
pcVar6 = *(code **)(iVar10 + 4);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a9db;
(*pcVar6)();
*(float *)(this + 0x58) = fVar25;
}
}
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x9a0);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a2fb;
piVar13 = (int *)(*pcVar6)();
iVar10 = *piVar13;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar10 + 300);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a308;
pfVar12 = (float *)(*pcVar6)();
iVar10 = *piVar13;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar10 + 0x14c);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a315;
pfVar14 = (float *)(*pcVar6)();
fVar25 = pfVar14[2];
fVar26 = *pfVar14;
fVar3 = pfVar14[1];
SVar5 = this[0x60];
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
if (SVar5 == (SurvivorAttack)0x0) {
/* try { // try from 0091a541 to 0091a5ce has its CatchHandler @ 0091abd8 */
pcVar6 = *(code **)(iVar10 + 0x9a0);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a547;
piVar13 = (int *)(*pcVar6)();
local_70 = *pfVar12 - -fVar3 * 25.0;
pcVar6 = *(code **)(*piVar13 + 0x15c);
local_6c = pfVar12[1] - fVar26 * 25.0;
fVar26 = pfVar12[2];
*(int *)((int)pdVar20 + 0xc) = 0;
*(float **)((int)pdVar20 + 8) = &local_70;
*(float **)((int)pdVar20 + 4) = pfVar12;
*(int **)pdVar20 = piVar13;
local_68 = fVar26 - fVar25 * 25.0;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a5b4;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
iVar10 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = -0x40800000;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x970);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a5cf;
(*pcVar6)();
}
}
else {
pcVar6 = *(code **)(iVar10 + 0x9a0);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a34f;
piVar13 = (int *)(*pcVar6)();
pcVar6 = *(code **)(*piVar13 + 0x15c);
local_70 = -fVar3 * 25.0 + *pfVar12;
local_6c = fVar26 * 25.0 + pfVar12[1];
fVar26 = pfVar12[2];
*(int *)((int)pdVar20 + 0xc) = 0;
*(float **)((int)pdVar20 + 8) = &local_70;
*(float **)((int)pdVar20 + 4) = pfVar12;
local_68 = fVar25 * 25.0 + fVar26;
*(int **)pdVar20 = piVar13;
*(undefined4 *)((int)pdVar20 + -4) = 0x91a3b0;
cVar7 = (*pcVar6)();
if (cVar7 == '\0') {
iVar10 = *(int *)param_1;
*(int *)((int)pdVar20 + 4) = -0x40800000;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x968);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a3cb;
(*pcVar6)();
}
}
}
}
else {
*(int *)((int)pdVar20 + 4) = 1;
*(SurvivorBot **)pdVar20 = param_1 + 0x4028;
*(undefined4 *)((int)pdVar20 + -4) = 0x919cd3;
cVar7 = INextBot::IsDebugging(*(INextBot **)pdVar20,*(uint *)((int)pdVar20 + 4));
if (cVar7 != '\0') {
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x9b8);
*(undefined4 *)((int)pdVar20 + -4) = 0x919ce6;
iVar10 = (*pcVar6)();
*(int *)((int)pdVar20 + 0xc) = iVar10;
fVar25 = *(float *)(gpGlobals + 0xc);
*(char **)pdVar20 = "%3.2f: %s: NOT FIRING because our aim is off\n";
*(double *)((int)pdVar20 + 4) = (double)fVar25;
*(undefined4 *)((int)pdVar20 + -4) = 0x919d09;
DevMsg(*(char **)pdVar20);
}
}
}
else {
LAB_00919897:
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar11 + 0x9a4);
*(undefined4 *)((int)pdVar20 + -4) = 0x9198a2;
piVar13 = (int *)(*pcVar6)();
iVar11 = *piVar13;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar11 + 0xcc);
*(undefined4 *)((int)pdVar20 + -4) = 0x9198ad;
cVar7 = (*pcVar6)();
if (cVar7 != '\0') {
iVar11 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
/* try { // try from 0091a3d5 to 0091a3e5 has its CatchHandler @ 0091ac08 */
pcVar6 = *(code **)(iVar11 + 0x9a4);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a3db;
piVar13 = (int *)(*pcVar6)();
iVar11 = *piVar13;
*(int **)pdVar20 = piVar13;
pcVar6 = *(code **)(iVar11 + 0xd0);
*(undefined4 *)((int)pdVar20 + -4) = 0x91a3e6;
lVar24 = (longdouble)(*pcVar6)();
if (local_10c <= (float)lVar24) {
bVar8 = false;
goto LAB_00919a88;
}
}
*(int *)((int)pdVar20 + 4) = 1;
*(SurvivorBot **)pdVar20 = param_1 + 0x4028;
*(undefined4 *)((int)pdVar20 + -4) = 0x9198cb;
cVar7 = INextBot::IsDebugging(*(INextBot **)pdVar20,*(uint *)((int)pdVar20 + 4));
if (cVar7 != '\0') {
iVar10 = *(int *)param_1;
*(SurvivorBot **)pdVar20 = param_1;
pcVar6 = *(code **)(iVar10 + 0x9b8);
*(undefined4 *)((int)pdVar20 + -4) = 0x9198de;
iVar10 = (*pcVar6)();
*(int *)((int)pdVar20 + 0xc) = iVar10;
fVar25 = *(float *)(gpGlobals + 0xc);
*(char **)pdVar20 =
"%3.2f: %s: NOT FIRING because our head hasn\'t been still long enough\n";
*(double *)((int)pdVar20 + 4) = (double)fVar25;
*(undefined4 *)((int)pdVar20 + -4) = 0x919901;
DevMsg(*(char **)pdVar20);
}
}
}
}
else {
(**(code **)(*(int *)param_1 + 0x9b8))();
DevMsg("%3.2f: %s: NOT FIRING because I am very close to a calm witch.\n");
pdVar20 = (double *)&stack0xfffffeb4;
}
}
}
uVar22 = 0;
LAB_0091956a:
iVar10 = _DAT_0105db00;
if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
*(undefined4 *)((int)pdVar20 + -4) = 0x919587;
iVar11 = ThreadGetCurrentId();
if (iVar10 == iVar11) {
*(int **)pdVar20 = _DAT_0105d15c;
*(undefined4 *)((int)pdVar20 + -4) = 0x9196d5;
cVar7 = CVProfNode::ExitScope();
if (cVar7 != '\0') {
_DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
}
DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
}
}
if (iVar18 != 0) {
*(int *)((int)pdVar20 + 0x14) = 0;
*(int *)((int)pdVar20 + 0x10) = 0;
*(int *)((int)pdVar20 + 0xc) = 0;
*(int *)pdVar20 = iVar18;
*(int *)((int)pdVar20 + 4) = 0;
*(int *)((int)pdVar20 + 8) = 0;
pcVar6 = *(code **)(iVar18 + 0x54);
*(undefined4 *)((int)pdVar20 + -4) = 0x9195cb;
(*pcVar6)();
}
return uVar22;
}
SourceMod gamedata
paste intoaddons/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.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.