CTerrorWeapon::OnSwingStart
0x00572740 · 4942 bytes · __thiscall
_ZN13CTerrorWeapon12OnSwingStartEv
Decompiled
undefined (1 param)
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CTerrorWeapon::OnSwingStart() */
void __thiscall CTerrorWeapon::OnSwingStart(CTerrorWeapon *this)
{
float fVar1;
code *pcVar2;
char cVar3;
CTerrorPlayer *this_00;
QAngle *pQVar4;
CTerrorPlayer *pCVar5;
uint uVar6;
int iVar7;
int iVar8;
undefined4 uVar9;
int *piVar10;
int *piVar11;
undefined4 *puVar12;
int iVar13;
float *pfVar14;
float *pfVar15;
CTerrorPlayer CVar16;
longdouble lVar17;
float fVar18;
float fVar19;
undefined1 auStackY_1f8 [4];
undefined1 auStackY_1f4 [4];
undefined1 auStackY_1f0 [8];
undefined1 auStackY_1e8 [16];
float afStackY_1d8 [3];
float local_1bc [14];
CTerrorPlayer *local_184;
CTerrorPlayer *local_180;
float local_17c;
float local_178;
float local_174;
float local_170;
float local_168;
float local_164;
float local_160;
float local_15c;
float local_158;
float local_154;
float local_150;
float local_14c;
float local_148;
float local_144;
float local_140;
float local_13c;
float local_138;
float local_134;
float local_130;
float local_12c;
float local_128;
float local_124;
float local_120;
float local_11c;
float local_118;
undefined **local_110;
CTerrorPlayer *local_10c;
float local_108;
float local_104;
float local_100;
int local_fc;
float local_f8;
float local_f4;
float local_f0;
float local_ec;
char local_e8;
CTerrorPlayer *local_e4;
undefined4 local_e0;
undefined4 local_dc;
undefined4 local_d8;
float local_d4;
undefined4 local_d0;
float local_cc;
float local_c8;
float local_c4;
float local_bc;
float local_b8;
float local_b4;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_9c;
undefined4 local_98;
undefined4 local_94;
undefined4 local_8c;
undefined1 local_88;
bool local_87;
float local_70;
float local_6c;
float local_68;
undefined1 local_64 [32];
float local_44;
int local_24;
pfVar14 = (float *)&stack0xfffffe34;
pfVar15 = (float *)&stack0xfffffe34;
this_00 = (CTerrorPlayer *)GetPlayerOwner(this);
if (this_00 == (CTerrorPlayer *)0x0) {
return;
}
CBaseCombatWeapon::GetWpnData((CBaseCombatWeapon *)this);
(**(code **)(*(int *)this_00 + 0x850))();
this[0x1791] = (CTerrorWeapon)0x0;
*(undefined4 *)(this + 0x1794) = 0xffffffff;
SuppressHelpingHands(this,0.0);
pcVar2 = *(code **)(*(int *)this + 0x3f0);
(**(code **)(*(int *)this + 0x6c0))();
(*pcVar2)();
CTerrorPlayer::InhibitCalm(this_00,2.0);
local_110 = &PTR_operator___00c53020;
local_e0 = 0;
local_dc = 0;
local_d8 = 0;
local_d4 = 0.0;
local_d0 = 0;
/* try { // try from 00572829 to 00572840 has its CatchHandler @ 00573b15 */
local_10c = this_00;
pQVar4 = (QAngle *)(**(code **)(*(int *)this_00 + 0x238))();
AngleVectors(pQVar4,(Vector *)&local_108);
iVar13 = 1;
local_fc = 3;
local_f8 = -1.0;
local_f4 = -1.0;
local_f0 = 150.0;
local_e4 = (CTerrorPlayer *)0x0;
local_ec = 50.0;
local_e8 = '\0';
if (0 < *(int *)(gpGlobals + 0x14)) {
do {
while( true ) {
*pfVar14 = (float)iVar13;
pfVar14[-1] = 8.004358e-39;
pCVar5 = (CTerrorPlayer *)UTIL_PlayerByIndex((int)*pfVar14);
if ((pCVar5 != (CTerrorPlayer *)0x0) && (*(int *)(pCVar5 + 0x30) != 0)) break;
LAB_005728d0:
iVar13 = iVar13 + 1;
pfVar15 = pfVar14;
if (*(int *)(gpGlobals + 0x14) < iVar13) goto LAB_0057290c;
}
if (*(int *)(pCVar5 + 0x30) - *(int *)(gpGlobals + 0x58) >> 4 != 0) {
iVar8 = *(int *)pCVar5;
*pfVar14 = (float)pCVar5;
/* try { // try from 005728a5 to 00572997 has its CatchHandler @ 00573b22 */
pcVar2 = *(code **)(iVar8 + 0x16c);
pfVar14[-1] = 8.004277e-39;
cVar3 = (*pcVar2)();
if ((cVar3 != '\0') && (*(int *)(pCVar5 + 0x1f6c) != 2)) {
iVar8 = *(int *)pCVar5;
*pfVar14 = (float)pCVar5;
pcVar2 = *(code **)(iVar8 + 0x148);
pfVar14[-1] = 8.004311e-39;
iVar8 = (*pcVar2)();
if (iVar8 == 0) {
local_184 = pCVar5;
local_17c = 0.0;
local_178 = 0.0;
if (___atan2f_finite == 0.0) {
local_160 = 0.0;
}
else {
pfVar14[0xb] = (float)"TargetScan()";
pfVar14[10] = (float)"Unaccounted";
pfVar14[9] = (float)"(%s)%s";
pfVar14[8] = (float)&TargetScan<CBaseCombatCharacter>::
operator()(CBaseCombatCharacter*)::tm_fmt;
pfVar14[7] = 6.5861e-44;
pfVar14[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
pfVar14[5] = 0.0;
pfVar14[3] = 0.0;
pfVar14[4] = 0.0;
pfVar14[2] = 0.0;
pfVar14[1] = (float)&local_17c;
*pfVar14 = ___atan2f_finite;
pcVar2 = *(code **)((int)___atan2f_finite + 0x50);
pfVar14[-1] = 8.008614e-39;
(*pcVar2)();
local_160 = ___atan2f_finite;
}
iVar8 = _DAT_0105db00;
local_168 = local_17c;
local_164 = local_178;
if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
/* try { // try from 005734fe to 00573502 has its CatchHandler @ 00573ab7 */
pfVar14[-1] = 8.008705e-39;
iVar7 = ThreadGetCurrentId();
if (iVar8 == iVar7) {
if ((char *)*_DAT_0105d15c != "TargetScan()") {
pfVar14[4] = 0.0;
pfVar14[3] = (float)"Unaccounted";
pfVar14[2] = 1.4013e-45;
pfVar14[1] = (float)"TargetScan()";
*pfVar14 = (float)_DAT_0105d15c;
/* try { // try from 00573691 to 005736a2 has its CatchHandler @ 00573ab7 */
pfVar14[-1] = 8.00927e-39;
_DAT_0105d15c =
(int *)CVProfNode::GetSubNode
((char *)*pfVar14,(int)pfVar14[1],(char *)pfVar14[2],
(int)pfVar14[3]);
}
*pfVar14 = (float)_DAT_0105d15c;
pfVar14[-1] = 8.009288e-39;
CVProfNode::EnterScope();
DAT_0105d158 = '\0';
}
}
pfVar15 = pfVar14;
if (local_10c != local_184) {
iVar8 = *(int *)local_184;
*pfVar14 = (float)local_184;
/* try { // try from 0057351e to 00573542 has its CatchHandler @ 00573ae7 */
pcVar2 = *(code **)(iVar8 + 300);
pfVar14[-1] = 8.008751e-39;
cVar3 = (*pcVar2)();
if (cVar3 != '\0') {
if (local_fc != -1) {
*pfVar14 = (float)local_184;
pfVar14[-1] = 8.008795e-39;
iVar8 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar14);
if (iVar8 != local_fc) goto LAB_0057354f;
}
iVar8 = *(int *)local_184;
*pfVar14 = (float)local_184;
/* try { // try from 005736ba to 00573a85 has its CatchHandler @ 00573ae7 */
pcVar2 = *(code **)(iVar8 + 0x558);
pfVar14[-1] = 8.009329e-39;
cVar3 = (*pcVar2)();
if (cVar3 == '\0') {
iVar8 = *(int *)local_10c;
pfVar14[1] = (float)local_10c;
*pfVar14 = (float)&local_150;
pcVar2 = *(code **)(iVar8 + 0x234);
pfVar14[-1] = 8.009378e-39;
(*pcVar2)();
local_140 = local_104 * local_ec + local_14c;
local_13c = local_100 * local_ec + local_148;
local_144 = local_ec * local_108 + local_150;
iVar8 = *(int *)local_184;
pfVar14[-1] = (float)local_184;
pcVar2 = *(code **)(iVar8 + 0x288);
pfVar14[-2] = 8.009529e-39;
uVar9 = (*pcVar2)();
pfVar14[3] = 0.0;
pfVar14[2] = (float)&local_138;
pfVar14[1] = (float)&local_144;
*pfVar14 = (float)&local_150;
pfVar14[-1] = (float)uVar9;
pfVar14[-2] = 8.009594e-39;
CalcClosestPointOnLineSegment
((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
(Vector *)pfVar14[2],(float *)pfVar14[3]);
pCVar5 = local_184;
if (((byte)local_184[0x14d] & 8) != 0) {
pfVar14[-1] = (float)local_184;
pfVar14[-2] = 8.009631e-39;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar14[-1]);
}
local_150 = *(float *)(pCVar5 + 0x2e0);
local_14c = *(float *)(pCVar5 + 0x2e4);
local_148 = *(float *)(pCVar5 + 0x2e8);
iVar8 = *(int *)(local_184 + 0x194);
pfVar14[-1] = (float)(local_184 + 0x194);
pcVar2 = *(code **)(iVar8 + 8);
pfVar14[-2] = 8.009766e-39;
local_144 = local_150;
local_140 = local_14c;
local_13c = local_148;
iVar8 = (*pcVar2)();
fVar18 = *(float *)(iVar8 + 8);
pfVar14[2] = (float)&local_15c;
*pfVar14 = (float)&local_150;
pfVar14[3] = 0.0;
pfVar14[1] = (float)&local_144;
pfVar14[-1] = (float)&local_138;
local_13c = local_13c + fVar18;
pfVar14[-2] = 8.00986e-39;
CalcClosestPointOnLineSegment
((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
(Vector *)pfVar14[2],(float *)pfVar14[3]);
if (local_e8 != '\0') {
pfVar14[5] = -1.0;
pfVar14[4] = 1.4013e-45;
pfVar14[3] = 3.57331e-43;
pfVar14[2] = 3.57331e-43;
pfVar14[1] = 3.57331e-43;
*pfVar14 = 1.0;
pfVar14[-1] = (float)&local_15c;
pfVar14[-2] = 8.009951e-39;
NDebugOverlay::Cross3D
((Vector *)pfVar14[-1],*pfVar14,(int)pfVar14[1],(int)pfVar14[2],
(int)pfVar14[3],*(bool *)(pfVar14 + 4),pfVar14[5]);
pfVar14[5] = -1.0;
pfVar14[4] = 1.4013e-45;
pfVar14[3] = 0.0;
pfVar14[2] = 0.0;
pfVar14[1] = 3.57331e-43;
*pfVar14 = (float)&local_150;
pfVar14[-1] = (float)&local_144;
pfVar14[-2] = 8.010032e-39;
NDebugOverlay::Line((Vector *)pfVar14[-1],(Vector *)*pfVar14,(int)pfVar14[1],
(int)pfVar14[2],(int)pfVar14[3],*(bool *)(pfVar14 + 4),
pfVar14[5]);
}
iVar8 = *(int *)local_10c;
*pfVar14 = (float)local_10c;
pfVar14[-1] = (float)&local_12c;
pcVar2 = *(code **)(iVar8 + 0x234);
pfVar14[-2] = 8.01007e-39;
(*pcVar2)();
pfVar14[-2] = (float)&local_120;
local_120 = local_15c - local_12c;
local_11c = local_158 - local_128;
local_118 = local_154 - local_124;
pfVar14[-3] = 8.010195e-39;
VectorNormalize((Vector *)pfVar14[-2]);
pfVar14[-1] = (float)&local_15c;
*pfVar14 = (float)&local_cc;
pfVar14[-2] = (float)(local_10c + 0x194);
pfVar14[-3] = 8.010244e-39;
CCollisionProperty::CalcNearestPoint
((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],
(Vector *)*pfVar14);
pfVar14[-1] = (float)&local_cc;
*pfVar14 = (float)&local_70;
pfVar14[-2] = (float)(local_184 + 0x194);
pfVar14[-3] = 8.010286e-39;
CCollisionProperty::CalcNearestPoint
((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],
(Vector *)*pfVar14);
pfVar15 = pfVar14 + -2;
if ((SQRT((local_c8 - local_6c) * (local_c8 - local_6c) +
(local_cc - local_70) * (local_cc - local_70) +
(local_c4 - local_68) * (local_c4 - local_68)) <= local_f0) &&
(fVar18 = local_118 * local_100 + local_120 * local_108 + local_11c * local_104
, pfVar15 = pfVar14 + -2, local_f8 < fVar18)) {
*pfVar14 = 1.4013e-45;
pfVar14[-1] = (float)local_184;
pfVar14[-2] = (float)local_10c;
pfVar14[-3] = 8.010572e-39;
cVar3 = CBaseCombatCharacter::IsAbleToSee();
pfVar15 = pfVar14 + -2;
if (cVar3 != '\0') {
if (local_f4 <= fVar18) {
local_f4 = fVar18;
local_e4 = local_184;
}
*pfVar14 = (float)&local_184;
pfVar14[-1] = local_d4;
pfVar14[-2] = (float)&local_e0;
pfVar14[-3] = 8.010682e-39;
CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
*)pfVar14[-2],(int)pfVar14[-1],(CBaseCombatCharacter **)*pfVar14
);
pfVar15 = pfVar14 + -2;
}
}
}
}
}
LAB_0057354f:
iVar8 = _DAT_0105db00;
if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
pfVar15[-1] = 8.008854e-39;
iVar7 = ThreadGetCurrentId();
if (iVar8 == iVar7) {
*pfVar15 = (float)_DAT_0105d15c;
pfVar15[-1] = 8.009148e-39;
cVar3 = CVProfNode::ExitScope();
if (cVar3 != '\0') {
_DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
}
DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
}
}
pfVar14 = pfVar15;
if (local_160 != 0.0) {
pfVar15[5] = 0.0;
pfVar15[4] = 0.0;
pfVar15[3] = 0.0;
*pfVar15 = local_160;
pfVar15[1] = local_168;
pfVar15[2] = local_164;
pcVar2 = *(code **)((int)local_160 + 0x54);
pfVar15[-1] = 8.008955e-39;
(*pcVar2)();
}
}
}
goto LAB_005728d0;
}
iVar13 = iVar13 + 1;
pfVar15 = pfVar14;
} while (iVar13 <= *(int *)(gpGlobals + 0x14));
}
LAB_0057290c:
*(undefined4 *)((int)pfVar15 + -4) = 0x572911;
iVar13 = TheNextBots();
uVar6 = (uint)*(ushort *)(iVar13 + 0x10);
if (uVar6 != 0xffff) {
iVar8 = *(int *)(iVar13 + 4);
pfVar14 = pfVar15;
do {
piVar10 = *(int **)(iVar8 + uVar6 * 8);
iVar8 = *piVar10;
*pfVar14 = (float)piVar10;
/* try { // try from 00572ac2 to 00572b97 has its CatchHandler @ 00573b22 */
pcVar2 = *(code **)(iVar8 + 0xb4);
pfVar14[-1] = 8.005035e-39;
local_180 = (CTerrorPlayer *)(*pcVar2)();
local_174 = 0.0;
local_170 = 0.0;
if (___atan2f_finite == 0.0) {
local_154 = 0.0;
}
else {
pfVar14[0xb] = (float)"TargetScan()";
pfVar14[10] = (float)"Unaccounted";
pfVar14[9] = (float)"(%s)%s";
pfVar14[8] = (float)&TargetScan<CBaseCombatCharacter>::operator()(CBaseCombatCharacter*)::
tm_fmt;
pfVar14[7] = 6.5861e-44;
pfVar14[6] = (float)"/data/src/game/shared/sharedfunctorutils.h";
pfVar14[5] = 0.0;
pfVar14[3] = 0.0;
pfVar14[4] = 0.0;
pfVar14[2] = 0.0;
pfVar14[1] = (float)&local_174;
*pfVar14 = ___atan2f_finite;
pcVar2 = *(code **)((int)___atan2f_finite + 0x50);
pfVar14[-1] = 8.004609e-39;
(*pcVar2)();
local_154 = ___atan2f_finite;
}
iVar8 = _DAT_0105db00;
local_15c = local_174;
local_158 = local_170;
if ((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) {
/* try { // try from 005729d5 to 005729d9 has its CatchHandler @ 00573b19 */
pfVar14[-1] = 8.004702e-39;
iVar7 = ThreadGetCurrentId();
if (iVar8 == iVar7) {
if ((char *)*_DAT_0105d15c != "TargetScan()") {
pfVar14[4] = 0.0;
pfVar14[3] = (float)"Unaccounted";
pfVar14[2] = 1.4013e-45;
pfVar14[1] = (float)"TargetScan()";
*pfVar14 = (float)_DAT_0105d15c;
/* try { // try from 00572c10 to 00572c21 has its CatchHandler @ 00573b19 */
pfVar14[-1] = 8.005502e-39;
_DAT_0105d15c =
(int *)CVProfNode::GetSubNode
((char *)*pfVar14,(int)pfVar14[1],(char *)pfVar14[2],
(int)pfVar14[3]);
}
*pfVar14 = (float)_DAT_0105d15c;
pfVar14[-1] = 8.00552e-39;
CVProfNode::EnterScope();
DAT_0105d158 = '\0';
}
}
pfVar15 = pfVar14;
if (local_10c != local_180) {
iVar8 = *(int *)local_180;
*pfVar14 = (float)local_180;
/* try { // try from 005729f5 to 00572a19 has its CatchHandler @ 00573af7 */
pcVar2 = *(code **)(iVar8 + 300);
pfVar14[-1] = 8.004748e-39;
cVar3 = (*pcVar2)();
if (cVar3 != '\0') {
if (local_fc != -1) {
*pfVar14 = (float)local_180;
pfVar14[-1] = 8.004791e-39;
iVar8 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar14);
if (iVar8 != local_fc) goto LAB_00572a30;
}
iVar8 = *(int *)local_180;
*pfVar14 = (float)local_180;
/* try { // try from 00572c6b to 00573021 has its CatchHandler @ 00573af7 */
pcVar2 = *(code **)(iVar8 + 0x558);
pfVar14[-1] = 8.005631e-39;
cVar3 = (*pcVar2)();
if (cVar3 == '\0') {
iVar8 = *(int *)local_10c;
pfVar14[1] = (float)local_10c;
*pfVar14 = (float)&local_144;
pcVar2 = *(code **)(iVar8 + 0x234);
pfVar14[-1] = 8.00568e-39;
(*pcVar2)();
local_134 = local_104 * local_ec + local_140;
local_130 = local_100 * local_ec + local_13c;
local_138 = local_ec * local_108 + local_144;
iVar8 = *(int *)local_180;
pfVar14[-1] = (float)local_180;
pcVar2 = *(code **)(iVar8 + 0x288);
pfVar14[-2] = 8.005831e-39;
uVar9 = (*pcVar2)();
pfVar14[3] = 0.0;
pfVar14[2] = (float)&local_12c;
pfVar14[1] = (float)&local_138;
*pfVar14 = (float)&local_144;
pfVar14[-1] = (float)uVar9;
pfVar14[-2] = 8.005896e-39;
CalcClosestPointOnLineSegment
((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
(Vector *)pfVar14[2],(float *)pfVar14[3]);
pCVar5 = local_180;
if (((byte)local_180[0x14d] & 8) != 0) {
pfVar14[-1] = (float)local_180;
pfVar14[-2] = 8.005933e-39;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar14[-1]);
}
local_144 = *(float *)(pCVar5 + 0x2e0);
local_140 = *(float *)(pCVar5 + 0x2e4);
local_13c = *(float *)(pCVar5 + 0x2e8);
iVar8 = *(int *)(local_180 + 0x194);
pfVar14[-1] = (float)(local_180 + 0x194);
pcVar2 = *(code **)(iVar8 + 8);
pfVar14[-2] = 8.006068e-39;
local_138 = local_144;
local_134 = local_140;
local_130 = local_13c;
iVar8 = (*pcVar2)();
fVar18 = *(float *)(iVar8 + 8);
pfVar14[2] = (float)&local_150;
pfVar14[3] = 0.0;
pfVar14[1] = (float)&local_138;
*pfVar14 = (float)&local_144;
pfVar14[-1] = (float)&local_12c;
local_130 = local_130 + fVar18;
pfVar14[-2] = 8.006153e-39;
CalcClosestPointOnLineSegment
((Vector *)pfVar14[-1],(Vector *)*pfVar14,(Vector *)pfVar14[1],
(Vector *)pfVar14[2],(float *)pfVar14[3]);
if (local_e8 != '\0') {
pfVar14[5] = -1.0;
pfVar14[4] = 1.4013e-45;
pfVar14[3] = 3.57331e-43;
pfVar14[2] = 3.57331e-43;
pfVar14[1] = 3.57331e-43;
*pfVar14 = 1.0;
pfVar14[-1] = (float)&local_150;
pfVar14[-2] = 8.006245e-39;
NDebugOverlay::Cross3D
((Vector *)pfVar14[-1],*pfVar14,(int)pfVar14[1],(int)pfVar14[2],
(int)pfVar14[3],*(bool *)(pfVar14 + 4),pfVar14[5]);
pfVar14[5] = -1.0;
pfVar14[4] = 1.4013e-45;
pfVar14[3] = 0.0;
pfVar14[2] = 0.0;
pfVar14[1] = 3.57331e-43;
*pfVar14 = (float)&local_144;
pfVar14[-1] = (float)&local_138;
pfVar14[-2] = 8.006326e-39;
NDebugOverlay::Line((Vector *)pfVar14[-1],(Vector *)*pfVar14,(int)pfVar14[1],
(int)pfVar14[2],(int)pfVar14[3],*(bool *)(pfVar14 + 4),pfVar14[5])
;
}
iVar8 = *(int *)local_10c;
*pfVar14 = (float)local_10c;
pfVar14[-1] = (float)&local_70;
pcVar2 = *(code **)(iVar8 + 0x234);
pfVar14[-2] = 8.00636e-39;
(*pcVar2)();
pfVar14[-2] = (float)&local_120;
local_120 = local_150 - local_70;
local_11c = local_14c - local_6c;
local_118 = local_148 - local_68;
pfVar14[-3] = 8.006472e-39;
VectorNormalize((Vector *)pfVar14[-2]);
pfVar14[-1] = (float)&local_150;
*pfVar14 = (float)&local_cc;
pfVar14[-2] = (float)(local_10c + 0x194);
pfVar14[-3] = 8.00652e-39;
CCollisionProperty::CalcNearestPoint
((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],(Vector *)*pfVar14);
*pfVar14 = (float)&local_70;
pfVar14[-1] = (float)&local_cc;
pfVar14[-2] = (float)(local_180 + 0x194);
pfVar14[-3] = 8.006558e-39;
CCollisionProperty::CalcNearestPoint
((CCollisionProperty *)pfVar14[-2],(Vector *)pfVar14[-1],(Vector *)*pfVar14);
pfVar15 = pfVar14 + -2;
if ((SQRT((local_c8 - local_6c) * (local_c8 - local_6c) +
(local_c4 - local_68) * (local_c4 - local_68) +
(local_cc - local_70) * (local_cc - local_70)) <= local_f0) &&
(fVar18 = local_118 * local_100 + local_120 * local_108 + local_11c * local_104,
pfVar15 = pfVar14 + -2, local_f8 < fVar18)) {
*pfVar14 = 1.4013e-45;
pfVar14[-1] = (float)local_180;
pfVar14[-2] = (float)local_10c;
pfVar14[-3] = 8.006844e-39;
cVar3 = CBaseCombatCharacter::IsAbleToSee();
pfVar15 = pfVar14 + -2;
if (cVar3 != '\0') {
if (local_f4 <= fVar18) {
local_f4 = fVar18;
local_e4 = local_180;
}
*pfVar14 = (float)&local_180;
pfVar14[-1] = local_d4;
pfVar14[-2] = (float)&local_e0;
pfVar14[-3] = 8.006955e-39;
CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>::
InsertBefore((CUtlVector<CBaseCombatCharacter*,CUtlMemory<CBaseCombatCharacter*,int>>
*)pfVar14[-2],(int)pfVar14[-1],(CBaseCombatCharacter **)*pfVar14);
pfVar15 = pfVar14 + -2;
}
}
}
}
}
LAB_00572a30:
iVar8 = _DAT_0105db00;
if ((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) {
pfVar15[-1] = 8.004864e-39;
iVar7 = ThreadGetCurrentId();
if (iVar8 == iVar7) {
*pfVar15 = (float)_DAT_0105d15c;
pfVar15[-1] = 8.005558e-39;
cVar3 = CVProfNode::ExitScope();
if (cVar3 != '\0') {
_DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
}
DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
}
}
if (local_154 != 0.0) {
pfVar15[5] = 0.0;
pfVar15[4] = 0.0;
pfVar15[3] = 0.0;
*pfVar15 = local_154;
pfVar15[1] = local_15c;
pfVar15[2] = local_158;
pcVar2 = *(code **)((int)local_154 + 0x54);
pfVar15[-1] = 8.00496e-39;
(*pcVar2)();
}
iVar8 = *(int *)(iVar13 + 4);
uVar6 = (uint)*(ushort *)(iVar8 + 6 + uVar6 * 8);
pfVar14 = pfVar15;
} while (uVar6 != 0xffff);
}
pCVar5 = local_e4;
*(float *)(this + 0x1580) = local_d4;
if (2 < (int)local_d4) {
iVar13 = *(int *)this_00;
pfVar15[2] = 0.0;
pfVar15[1] = 4.76441e-44;
*pfVar15 = (float)this_00;
/* try { // try from 00573052 to 005734c1 has its CatchHandler @ 00573b22 */
pcVar2 = *(code **)(iVar13 + 0x7fc);
pfVar15[-1] = 8.00703e-39;
(*pcVar2)();
goto LAB_00572b4a;
}
if ((int)local_d4 < 1) {
pfVar15[4] = 0.0;
pfVar15[2] = (float)&local_12c;
pfVar15[3] = 0.0;
pfVar15[1] = (float)&local_138;
*pfVar15 = (float)this_00;
pfVar15[-1] = 8.007706e-39;
CBasePlayer::EyePositionAndVectors
((CBasePlayer *)*pfVar15,(Vector *)pfVar15[1],(Vector *)pfVar15[2],
(Vector *)pfVar15[3],(Vector *)pfVar15[4]);
pfVar15[3] = 0.0;
pfVar15[2] = 0.0;
fVar19 = local_12c * 150.0;
pfVar15[1] = (float)this_00;
fVar18 = local_128 * 150.0;
*pfVar15 = (float)&local_120;
local_b4 = local_124 * 150.0;
local_94 = 0;
local_98 = 0;
local_bc = fVar19;
local_b8 = fVar18;
local_9c = 0;
local_8c = 0;
local_88 = 1;
local_a4 = 0;
local_a8 = 0;
local_ac = 0;
local_cc = local_138;
local_87 = fVar18 * fVar18 + local_b4 * local_b4 + fVar19 * fVar19 != 0.0;
local_c8 = local_134;
local_c4 = local_130;
pfVar15[-1] = 8.008065e-39;
CTraceFilterSimple::CTraceFilterSimple
((CTraceFilterSimple *)*pfVar15,(IHandleEntity *)pfVar15[1],(int)pfVar15[2],
(_func_bool_IHandleEntity_ptr_int *)pfVar15[3]);
iVar13 = *enginetrace;
pfVar15[4] = (float)&local_70;
pfVar15[3] = (float)&local_120;
pfVar15[2] = 9.422334e-38;
pfVar15[1] = (float)&local_cc;
*pfVar15 = (float)enginetrace;
pcVar2 = *(code **)(iVar13 + 0x14);
pfVar15[-1] = 8.008124e-39;
(*pcVar2)();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
pfVar15[6] = -1.0;
pfVar15[5] = 1.4013e-45;
pfVar15[4] = 0.0;
pfVar15[3] = 0.0;
pfVar15[2] = 3.57331e-43;
pfVar15[1] = (float)local_64;
*pfVar15 = (float)&local_70;
pfVar15[-1] = 8.008218e-39;
DebugDrawLine((Vector *)*pfVar15,(Vector *)pfVar15[1],(int)pfVar15[2],(int)pfVar15[3],
(int)pfVar15[4],SUB41(pfVar15[5],0),pfVar15[6]);
}
iVar13 = local_24;
if (((local_44 <= 0.0) || (1.0 <= local_44)) || (local_24 == 0)) goto LAB_00572b29;
if (*(char **)(local_24 + 0x7c) != "func_breakable") {
pfVar15[1] = (float)"func_breakable";
*pfVar15 = (float)iVar13;
pfVar15[-1] = 8.008316e-39;
cVar3 = CBaseEntity::ClassMatchesComplex((CBaseEntity *)*pfVar15,(char *)pfVar15[1]);
if ((cVar3 == '\0') && (*(char **)(local_24 + 0x7c) != "func_breakable_surf")) {
pfVar15[1] = (float)"func_breakable_surf";
*pfVar15 = (float)local_24;
pfVar15[-1] = 8.00836e-39;
cVar3 = CBaseEntity::ClassMatchesComplex((CBaseEntity *)*pfVar15,(char *)pfVar15[1]);
if (cVar3 == '\0') goto LAB_00572b29;
}
}
LAB_00573415:
iVar13 = *(int *)this_00;
pfVar15[2] = 0.0;
pfVar15[1] = 5.04467e-44;
*pfVar15 = (float)this_00;
pcVar2 = *(code **)(iVar13 + 0x7fc);
pfVar15[-1] = 8.008418e-39;
(*pcVar2)();
}
else {
if ((local_d4 == 1.4013e-45) && (local_e4 != (CTerrorPlayer *)0x0)) {
pfVar15[3] = 0.0;
pfVar15[2] = (float)&Infected::typeinfo;
pfVar15[1] = (float)&CBaseCombatCharacter::typeinfo;
*pfVar15 = (float)pCVar5;
pfVar15[-1] = 8.007102e-39;
piVar10 = (int *)__dynamic_cast();
if (piVar10 != (int *)0x0) {
iVar13 = *piVar10;
*pfVar15 = (float)piVar10;
pcVar2 = *(code **)(iVar13 + 0x594);
pfVar15[-1] = 8.007132e-39;
piVar11 = (int *)(*pcVar2)();
iVar13 = *piVar11;
pfVar15[1] = 2.8026e-45;
*pfVar15 = (float)piVar11;
pcVar2 = *(code **)(iVar13 + 0x114);
pfVar15[-1] = 8.007161e-39;
cVar3 = (*pcVar2)();
if ((cVar3 == '\0') || (*(int *)(ZombieStompAlways._28_4_ + 0x30) != 0)) {
iVar13 = *piVar11;
*pfVar15 = (float)piVar11;
pcVar2 = *(code **)(iVar13 + 0xfc);
pfVar15[-1] = 8.007188e-39;
iVar13 = (*pcVar2)();
if (iVar13 == 4) {
if ((*(byte *)((int)piVar10 + 0x14d) & 8) != 0) {
*pfVar15 = (float)piVar10;
pfVar15[-1] = 8.010744e-39;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*pfVar15);
}
fVar18 = (float)piVar10[0xba];
if (((byte)this_00[0x14d] & 8) != 0) {
*pfVar15 = (float)this_00;
/* try { // try from 00573aa0 to 00573ab1 has its CatchHandler @ 00573b22 */
pfVar15[-1] = 8.010726e-39;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*pfVar15);
}
if (*(float *)(this_00 + 0x2e8) + 36.0 <= fVar18) goto LAB_005730d1;
}
else {
LAB_005730d1:
if (*(int *)(ZombieStompAlways._28_4_ + 0x30) == 0) goto LAB_00573415;
}
CVar16 = (CTerrorPlayer)0x1;
if (this_00[0x1a90] == (CTerrorPlayer)0x0) {
CVar16 = this_00[0x1a91];
}
*pfVar15 = (float)this_00;
pfVar15[-1] = 8.007288e-39;
lVar17 = (longdouble)CTerrorPlayer::GetWalkTopSpeed((CTerrorPlayer *)*pfVar15);
if (((byte)this_00[0x14d] & 0x10) != 0) {
*pfVar15 = (float)this_00;
pfVar15[-1] = 8.007363e-39;
CBaseEntity::CalcAbsoluteVelocity((CBaseEntity *)*pfVar15);
}
fVar18 = *(float *)(this_00 + 0x27c);
fVar19 = *(float *)(this_00 + 0x278);
fVar1 = *(float *)(this_00 + 0x274);
*pfVar15 = (float)this_00;
pfVar15[-1] = 8.007486e-39;
iVar13 = CBaseEntity::GetGroundEntity((CBaseEntity *)*pfVar15);
if (((iVar13 != 0) &&
(fVar1 * fVar1 + fVar19 * fVar19 + fVar18 * fVar18 <=
(float)lVar17 * 1.1 * (float)lVar17 * 1.1)) && (CVar16 == (CTerrorPlayer)0x0)) {
iVar13 = *(int *)this_00;
pfVar15[2] = 0.0;
pfVar15[1] = 5.1848e-44;
*pfVar15 = (float)this_00;
pcVar2 = *(code **)(iVar13 + 0x7fc);
pfVar15[-1] = 8.007581e-39;
(*pcVar2)();
this[0x1791] = (CTerrorWeapon)0x1;
iVar13 = *piVar10;
*pfVar15 = (float)piVar10;
pcVar2 = *(code **)(iVar13 + 0xc);
pfVar15[-1] = 8.007607e-39;
puVar12 = (undefined4 *)(*pcVar2)();
*(undefined4 *)(this + 0x1794) = *puVar12;
goto LAB_00572b4a;
}
goto LAB_00573415;
}
}
}
LAB_00572b29:
iVar13 = *(int *)this_00;
pfVar15[2] = 0.0;
pfVar15[1] = 4.90454e-44;
*pfVar15 = (float)this_00;
pcVar2 = *(code **)(iVar13 + 0x7fc);
pfVar15[-1] = 8.005217e-39;
(*pcVar2)();
}
LAB_00572b4a:
pfVar15[3] = 5.60519e-45;
pfVar15[2] = 0.0;
pfVar15[1] = 1.26117e-44;
*pfVar15 = (float)this_00;
pfVar15[-1] = 8.00527e-39;
CBasePlayer::RumbleEffect
((CBasePlayer *)*pfVar15,SUB41(pfVar15[1],0),SUB41(pfVar15[2],0),SUB41(pfVar15[3],0));
pfVar15[3] = 0.0;
pfVar15[2] = 0.0;
pfVar15[1] = (float)"Weapon.Swing";
*pfVar15 = (float)this_00;
pfVar15[-1] = 8.005315e-39;
CBaseEntity::EmitSound((CBaseEntity *)*pfVar15,(char *)pfVar15[1],pfVar15[2],(float *)pfVar15[3]);
*pfVar15 = (float)this_00;
pfVar15[-1] = 8.005327e-39;
CTerrorPlayer::OnMeleeAttack((CTerrorPlayer *)*pfVar15);
local_110 = &PTR_operator___00c53020;
*pfVar15 = (float)&local_e0;
local_d4 = 0.0;
pfVar15[-1] = 8.005374e-39;
CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*pfVar15);
local_d0 = local_e0;
*pfVar15 = (float)&local_e0;
pfVar15[-1] = 8.005411e-39;
CUtlMemory<CBaseCombatCharacter*,int>::Purge((CUtlMemory<CBaseCombatCharacter*,int> *)*pfVar15);
return;
}
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.