PopGetSettingNotificationName

__int64 __fastcall PopGetSettingNotificationName(__int64 a1, __int64 *a2){
  char v4; 
  char v5; 
  unsigned int v6; 
  GUID *v7; 
  LIST_ENTRY *PowerSettingConfiguration; 
  WNF_STATE_NAME *v9; 
  WNF_STATE_NAME Blink; 
  int v11; 
  unsigned int ProcessSessionId; 
  unsigned int v14; 
  __int64 v15; 
  unsigned int v16; 
  WNF_STATE_NAME StateName; 
  StateName = 0i64;
  v4 = 0;
  ExAcquireFastMutex(&PopSettingLock);
  v5 = 1;
  v6 = -1;
  if( a1 )
    v6 = *(_DWORD *)(a1 + 16);
  v7 = (GUID *)(a1 & -(__int64)(a1 != 0));
  if( v7 )
  {
    if( PopStateIsSessionSpecific((GUID *)(a1 & -(__int64)(a1 != 0))) )
    {
      ProcessSessionId = PsGetProcessSessionIdEx(*((_QWORD *)KeGetCurrentThread() + 23));
      v14 = ProcessSessionId;
      if( v6 == -1 || v6 == ProcessSessionId )
      {
        if( ProcessSessionId == -1 || PsIsServiceSession(ProcessSessionId) )
        {
          v11 = -1073741811;
          goto LABEL_12;
        }
        v6 = v14;
      }
      else
      {
        v11 = PopValidateContextMembership(SeLocalSystemSid);
        if( v11 < 0 )
        {
          if( !PsIsServiceSession(v14) )
            goto LABEL_12;
          if( !MmIsSessionInCurrentServerSilo(v6) )
            goto LABEL_12;
          v11 = PopValidateContextMembership(SeExports->SeLocalServiceSid);
          if( v11 < 0 )
            goto LABEL_12;
        }
      }
    }
    else
    {
      v6 = -1;
    }
    PowerSettingConfiguration = PopFindPowerSettingConfiguration(v7, v6);
    v9 = (WNF_STATE_NAME *)PowerSettingConfiguration;
    if( PowerSettingConfiguration )
    {
      if( LODWORD(PowerSettingConfiguration[3].Blink) || HIDWORD(PowerSettingConfiguration[3].Blink) )
      {
        Blink = (WNF_STATE_NAME)PowerSettingConfiguration[3].Blink;
LABEL_10:
        StateName = Blink;
LABEL_11:
        KeReleaseGuardedMutex(&PopSettingLock);
        v5 = 0;
        *a2 = (__int64)StateName;
        v11 = 0;
        goto LABEL_12;
      }
      v11 = PopCreateNotificationName(&StateName);
      if( v11 >= 0 )
      {
        v15 = *(_QWORD *)&v7->Data1 - *(_QWORD *)&GUID_ACDC_POWER_SOURCE.Data1;
        if( *(_QWORD *)&v7->Data1 == *(_QWORD *)&GUID_ACDC_POWER_SOURCE.Data1 )
          v15 = *(_QWORD *)v7->Data4 - *(_QWORD *)GUID_ACDC_POWER_SOURCE.Data4;
        if( !v15 )
          v9[6].Data[1] |= 8u;
        v16 = v9[6].Data[1];
        v9[7] = StateName;
        v9[6].Data[1] = v16 | 1;
        v4 = 1;
        goto LABEL_11;
      }
    }
    else
    {
      v11 = -1073741275;
    }
  }
  else
  {
    Blink = (WNF_STATE_NAME)PopPopPowerSettingSetChangeNotification;
    if( (_DWORD)PopPopPowerSettingSetChangeNotification
      || HIDWORD(PopPopPowerSettingSetChangeNotification) != (_DWORD)PopPopPowerSettingSetChangeNotification )
    {
      goto LABEL_10;
    }
    v11 = PopCreateNotificationName(&StateName);
    if( v11 >= 0 )
    {
      PopPopPowerSettingSetChangeNotification = (__int64)StateName;
      goto LABEL_11;
    }
  }
LABEL_12:
  if( v5 )
    KeReleaseGuardedMutex(&PopSettingLock);
  if( v4 )
    PopSetNotificationWork(0x80ui64);
  return(unsigned int)v11;
}

Referenced by:

NtPowerInformation