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