PopUnregisterPowerSettingCallback
VOID __fastcall PopUnregisterPowerSettingCallback(INT64 *a1){
INT64 v1;
INT64 *v2;
INT64 **v3;
v1 = *a1;
if( !*((_BYTE *)a1 + 33) )
{
if( *(INT64 **)(v1 + 8) == a1 )
{
v2 = (INT64 *)a1[1];
if( (INT64 *)*v2 == a1 )
{
*v2 = v1;
*(_QWORD *)(v1 + 8) = v2;
*((_DWORD *)a1 + 4) = 0;
a1[1] = (INT64)a1;
*a1 = (INT64)a1;
ExFreePoolWithTag(a1, 0x74655350u);
return;
}
}
LABEL_5:
__fastfail(3u);
}
if( *(INT64 **)(v1 + 8) != a1 )
goto LABEL_5;
v3 = (INT64 **)a1[1];
if( *v3 != a1 )
goto LABEL_5;
*v3 = (INT64 *)v1;
*(_QWORD *)(v1 + 8) = v3;
a1[1] = (INT64)a1;
*a1 = (INT64)a1;
KeSetEvent(&PopPowerSettingCallbackReturned, 0);
}Referenced by:
PoUnregisterPowerSettingCallback
PopDispatchPowerSettingCallbacks