PopQueryPowerButtonBugcheckEnabled

INT64 __stdcall PopQueryPowerButtonBugcheckEnabled(){
  _ETHREAD *CurrentThread; 
  int v1; 
  unsigned int v2; 
  int v3; 
  INT64 enabled; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockSharedEx((UINT64)&PopPowerButtonBugcheckLock, 0i64);
  v1 = PopPowerButtonBugcheckConfig;
  v2 = 0;
  if( _InterlockedCompareExchange64((volatile signed __int64 *)&PopPowerButtonBugcheckLock, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((INT64 *)&PopPowerButtonBugcheckLock);
  KeAbPostRelease(&PopPowerButtonBugcheckLock);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  v3 = v1 - 1;
  if( v3 )
  {
    if( v3 == 1 )
    {
      v2 = 1;
    }
    else
    {
      LODWORD(enabled) = 0;
      wil_details_FeatureReporting_ReportUsageToService(
        &Feature_PowerButtonBugcheck__private_reporting,
        0x8DF90Eui64,
        0i64,
        0i64,
        (FEATURE_LOGGED_TRAITS *)&Feature_PPLEnforcement_logged_traits,
        enabled);
    }
  }
  byte_140C20738 = v2;
  return v2;
}

Referenced by:

PopPowerButtonWorkCallback
PopPowerInformationInternal