произошла групповая реверсация
не пишите что это говно и оно слито в паблик (да да оно там есть,но не фулл) ибо
во первых, мне делать было нечего, поэтому и сливаю их
во вторых, вроде полного реверса не было (если я не ошибаюсь) поэтому да
в третьих, реверсил чисто для получения опыта в ida
gl
Спойлер: pseudocode
void __thiscall Fakelag(C_AimwareGlobals *this)
{
C_AimwareGlobals *Globals; // esi
bool v2; // bl
int v3; // ecx
char ducked; // dl
int v5; // edi
float duck_amount; // xmm0_4
int v7; // ebp
int v8; // eax
int v9; // eax
int v10; // ebx
int fakelag_factor; // ecx
int fakelag_type; // edi
bool ChokeTicks; // sf
unsigned __int8 ShouldChoke; // of
signed int WishTicks; // edx
signed int AdaptiveTicks; // ecx
float UnitsPerTick; // xmm1_4
int v18; // edx
int v19; // edx
int v20; // edx
Globals = this;
v2 = this->unknown;
if ( v2 )
*&this->m_bIsPeeking = 256;
v3 = m_fFlags;
ducked = 0;
if ( msc_fakelag_unducking )
{
v5 = Globals->m_pLocalPlayer;
duck_amount = *((m_flDuckAmount ^ *(m_flDuckAmountHash ^ 0x54F12F43)) + v5);
if ( duck_amount != 0.0 )
{
if ( *(v5 + m_fFlags) & 1 )
{
ducked = 1;
if ( duck_amount == 1.0 )
return;
}
}
}
v7 = msc_fakelag_mode;
if ( msc_fakelag_mode != 4 )
{
if ( !msc_fakelag_standing )
{
v8 = Globals->m_pLocalPlayer;
if ( v8 )
{
if ( *(v8 + m_fFlags) & 1
&& (((Globals->PreviousVelocity.x * Globals->PreviousVelocity.x)
+ (Globals->PreviousVelocity.y * Globals->PreviousVelocity.y))
+ (Globals->PreviousVelocity.z * Globals->PreviousVelocity.z)) < 1.0
&& !ducked )
{
return;
}
}
}
if ( v2 && rbot_active && rbot_silentaim == 3 && !msc_fakelag_attack && !ducked
|| Globals->end_pad[4] && Globals->gap_end[8] && !(*(m_fFlags + Globals->m_pLocalPlayer) & 1) )
{
goto LABEL_81;
}
if ( rbot_active
&& rbot_antiaim_enable
&& rbot_antiaim_fakeland
&& Globals->gap_end[8]
&& !(*(m_fFlags + Globals->m_pLocalPlayer) & 1) )// FL_ONGROUND
{
Globals->ShouldChoked = 1;
v7 = msc_fakelag_mode;
}
if ( msc_fakelag_style == 1 )
{
v9 = Globals->m_pLocalPlayer;
if ( v9 && *(v9 + v3) & 1 )
return;
goto LABEL_34;
}
if ( msc_fakelag_style == 2 && Globals->gap_end[8] && !(*(v3 + Globals->m_pLocalPlayer) & 1) )// hit ground
{
LABEL_81:
Globals->ShouldChoked = 0;
return;
}
}
LABEL_34:
if ( msc_fakelag_enable )
{
if ( msc_active )
{
v10 = Globals->m_pLocalPlayer;
if ( v10 )
{
if ( Globals->WeaponType != WEAPONTYPE_MACHINEGUN && (!msc_fakelag_key[0] || KeyArray[msc_fakelag_key[0]] & 2) )
{
fakelag_factor = (msc_fakelag_value + 0.5) - 1;
if ( ducked )
fakelag_factor = 14;
fakelag_type = 0;
if ( !ducked )
fakelag_type = v7;
if ( fakelag_type == 5 || *Globals[1].gap0 <= 0 )
{
switch ( fakelag_type )
{
case 0:
goto StaticFakelag;
case 1:
if ( Globals->m_nCommandNumber % 30 >= 15 )
goto LABEL_79;
StaticFakelag:
ShouldChoke = __OFSUB__(Globals->ChokedCommands, fakelag_factor);
ChokeTicks = Globals->ChokedCommands - fakelag_factor < 0;
goto LABEL_48;
case 2:
WishTicks = 0;
AdaptiveTicks = 2;
UnitsPerTick = fsqrt(
(*(v10 + m_vecVelocity_Offset) * *(v10 + m_vecVelocity_Offset))
+ (*(v10 + m_vecVelocity_Offset + 4) * *(v10 + m_vecVelocity_Offset + 4)))
* gpGlobals->interval_per_tick;
while ( 2 )
{
if ( (WishTicks * UnitsPerTick) > 68.0 )
goto LABEL_64;
if ( ((AdaptiveTicks - 1) * UnitsPerTick) > 68.0 )
{
++WishTicks;
LABEL_64:
ShouldChoke = __OFSUB__(Globals->ChokedCommands, WishTicks);
ChokeTicks = Globals->ChokedCommands - WishTicks < 0;
}
else if ( (AdaptiveTicks * UnitsPerTick) > 68.0 )
{
v20 = WishTicks + 2;
ShouldChoke = __OFSUB__(Globals->ChokedCommands, v20);
ChokeTicks = Globals->ChokedCommands - v20 < 0;
}
else if ( ((AdaptiveTicks + 1) * UnitsPerTick) > 68.0 )
{
v19 = WishTicks + 3;
ShouldChoke = __OFSUB__(Globals->ChokedCommands, v19);
ChokeTicks = Globals->ChokedCommands - v19 < 0;
}
else
{
if ( ((AdaptiveTicks + 2) * UnitsPerTick) <= 68.0 )
{
AdaptiveTicks += 5;
WishTicks += 5;
if ( AdaptiveTicks > 16 )
{
ShouldChoke = __OFSUB__(Globals->ChokedCommands, WishTicks);
ChokeTicks = Globals->ChokedCommands - WishTicks < 0;
break;
}
continue;
}
v18 = WishTicks + 4;
ShouldChoke = __OFSUB__(Globals->ChokedCommands, v18);
ChokeTicks = Globals->ChokedCommands - v18 < 0;
}
break;
}
LABEL_48:
if ( ChokeTicks ^ ShouldChoke )
LABEL_49:
Globals->ShouldChoked = 1;
goto LABEL_79;
case 3:
if ( Globals->ChokedCommands < Globals->m_nLastRandomChokeTicks )
goto LABEL_49;
g_pRandomNumber = 0x41C64E6D * g_pRandomNumber + 0x3039;
Globals->m_nLastRandomChokeTicks = (g_pRandomNumber / 0x10000 & 0x7FFFui64) % 0xF;
goto LABEL_79;
case 4:
case 5:
if ( Globals->m_bIsPeeking )
{
if ( Globals->ChokedCommands >= 14 )
{
*&Globals->m_bIsPeeking = 256;// null all peek variables
goto LABEL_79;
}
goto LABEL_74;
}
if ( !Autowall_Peek(Globals) )
{
Globals->m_bLocalPenetratable = 0;
goto LABEL_79;
}
if ( !Globals->m_bLocalPenetratable
&& (((Globals->m_vecVelocity.x * Globals->m_vecVelocity.x)
+ (Globals->m_vecVelocity.y * Globals->m_vecVelocity.y))
+ (Globals->m_vecVelocity.z * Globals->m_vecVelocity.z)) > 100.0 )
{
Globals->m_bIsPeeking = 1;
LABEL_74:
Globals->ShouldChoked = 1;
if ( fakelag_type == 5 )
{
if ( *Globals[1].gap0 >= 16 )
LOBYTE(Globals[1].m_PredictionVars) = 1;
else
Globals->m_RapidPeek = 1;
}
}
LABEL_79:
if ( !msc_fakelag_attack && Globals->Shooting )
goto LABEL_81;
break;
default:
goto LABEL_79;
}
}
}
}
}
}
}
}
Спойлер: reversed
void FakeLag::fakelag_recode(c_cs_player * local, c_user_cmd* cmd)
{
bool v2; // bl
int v3; // ecx
char ducked; // dl
int v5; // edi
float duck_amount; // xmm0_4
int v7; // ebp
int v8; // eax
int v9; // eax
int v10; // ebx
static int fakelag_factor; // ecx
int fakelag_type; // edi
bool ChokeTicks; // sf
unsigned __int8 ShouldChoke; // of
signed int WishTicks; // edx
signed int AdaptiveTicks; // ecx
float UnitsPerTick; // xmm1_4
int random;
int v18; // edx
int v19; // edx
int v20; // edx
int choke_amount;
ducked = 0;
if (&g_Options.fakelag.flagunducking)
{
duck_amount = pTarget->m_flDuckAmount();
if (duck_amount != 0.0)
{
if (local->GetFlags() & ON_GROUND)
{
ducked = 1;
if ( duck_amount == 1.0 ) //отрыжка поляка
return;
}
}
}
if (GetAsyncKeyState(&g_Options.misc.fakeduck))
{
n_Globals->is_fakeducking = true;
n_Globals->send_packet = g_pClientState->choked_commands >= 14;
}
else
n_Globals->is_fakeducking = false;
if (&g_Options.fakelag.enabled && !n_Globals->is_fakeducking)
{
if (local)
{
if (cmd->buttons & c_user_cmd::attack)
n_Globals->send_packet = g_pClientState->choked_commands >= 1;
fakelag_factor = (&g_Options.fakelag.factor + 0.5) - 1;
if (ducked)
fakelag_factor = 14;
switch (&g_Options.fakelag.variation)
{
case 0:
//factor
choke_amount = &g_Options.fakelag.factor;
break;
case 1:
// Switch
if (cmd->command_number % 30 >= &g_Options.fakelag.factor )
choke_amount = (g_pClientState->choked_commands >= &g_Options.fakelag.factor );
break;
case 2:
// pAdaptive
WishTicks = 0;
AdaptiveTicks = 2;
UnitsPerTick = local->GetVel().length2d() * g_pGlobalVars->interval_per_tick;
if (((AdaptiveTicks - 1) * UnitsPerTick) > 68.0)
{
++WishTicks;
if ((WishTicks * UnitsPerTick) > 68.0)
choke_amount = WishTicks;
}
else if ((AdaptiveTicks * UnitsPerTick) > 68.0)
{
v20 = WishTicks + 2;
choke_amount = v20;
choke_amount = g_pClientState->choked_commands >= v20;
}
else if (((AdaptiveTicks + 1) * UnitsPerTick) > 68.0)
{
v19 = WishTicks + 3;
choke_amount = v19;
choke_amount = g_pClientState->choked_commands >= v19;
}
else
{
if (((AdaptiveTicks + 2) * UnitsPerTick) <= 68.0)
{
AdaptiveTicks += 5;
WishTicks += 5;
if (AdaptiveTicks > 16)
{
choke_amount = WishTicks;
break;
}
}
v18 = WishTicks + 4;
choke_amount = g_pClientState->choked_commands >= v18;
}
break;
case 3:
// Random
choke_amount = g_pClientState->choked_commands >= math::random_float(1,14);
break;
}
}
const auto shot_last_tick = n_Globals->shot_cmd <= cmd->command_number && n_Globals->shot_cmd > cmd->command_number - g_pClientState>choked_commands;
n_Globals->send_packet = g_pClientState->choked_commands >= choke_amount || (!n_Globals->is_fakeducking && shot_last_tick);
}
}
credits: rijndael (reverse), therich (help)
бывшим юзерам в4 ку, остальным соболезную, фейклаги хуй знает какого года, прост дамп нашёл и заревёрсил с другом
пастерам думаю пойдёт