PopUnregisterPowerSettingCallback
VOID __stdcall PopUnregisterPowerSettingCallback(_POP_POWER_SETTING_REGISTRATION *Registration){
__int64 v1;
_POP_POWER_SETTING_REGISTRATION **v2;
_POP_POWER_SETTING_REGISTRATION **v3;
v1 = *(_QWORD *)Registration;
if( !*((_BYTE *)Registration + 33) )
{
if( *(_POP_POWER_SETTING_REGISTRATION **)(v1 + 8) == Registration )
{
v2 = (_POP_POWER_SETTING_REGISTRATION **)*((_QWORD *)Registration + 1);
if( *v2 == Registration )
{
*v2 = (_POP_POWER_SETTING_REGISTRATION *)v1;
*(_QWORD *)(v1 + 8) = v2;
Registration[4] = 0;
*((_QWORD *)Registration + 1) = Registration;
*(_QWORD *)Registration = Registration;
ExFreePoolWithTag(Registration, 0x74655350u);
return;
}
}
LABEL_5:
__fastfail(3u);
}
if( *(_POP_POWER_SETTING_REGISTRATION **)(v1 + 8) != Registration )
goto LABEL_5;
v3 = (_POP_POWER_SETTING_REGISTRATION **)*((_QWORD *)Registration + 1);
if( *v3 != Registration )
goto LABEL_5;
*v3 = (_POP_POWER_SETTING_REGISTRATION *)v1;
*(_QWORD *)(v1 + 8) = v3;
*((_QWORD *)Registration + 1) = Registration;
*(_QWORD *)Registration = Registration;
KeSetEvent((PRKEVENT)((char *)&stru_140C23628 + 3096), 0, 0);
}Referenced by:
PoUnregisterPowerSettingCallback
PopDispatchPowerSettingCallbacks