bool __stdcall hooks::create_move::hook(float input_sample_frametime, c_usercmd* cmd) {
if (!cmd || !cmd->command_number)
return create_move_original(input_sample_frametime, cmd);
create_move_original(input_sample_frametime, cmd);
csgo::local_player = static_cast<player_t*>(interfaces::entity_list->get_client_entity(interfaces::engine->get_local_player()));
uintptr_t* frame_pointer;
__asm mov frame_pointer, ebp;
bool& send_packet = *reinterpret_cast<bool*>(*frame_pointer - 0x1C);
auto old_viewangles = cmd->viewangles;
auto old_forwardmove = cmd->forwardmove;
auto old_sidemove = cmd->sidemove;
features::misc::bunny_hop(cmd);
features::misc::rank_reveal(cmd);
features::misc::radar();
prediction::start(cmd); {
} prediction::end();
math::correct_movement(old_viewangles, cmd, old_forwardmove, old_sidemove);
cmd->forwardmove = std::clamp(cmd->forwardmove, -450.0f, 450.0f);
cmd->sidemove = std::clamp(cmd->sidemove, -450.0f, 450.0f);
cmd->upmove = std::clamp(cmd->upmove, -320.0f, 320.0f);
cmd->viewangles.normalize();
cmd->viewangles.x = std::clamp(cmd->viewangles.x, -89.0f, 89.0f);
cmd->viewangles.y = std::clamp(cmd->viewangles.y, -180.0f, 180.0f);
cmd->viewangles.z = 0.0f;
return false;
}