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