PopFxLowPowerEpochCallback

NTSTATUS __stdcall PopFxLowPowerEpochCallback(GUID *SettingGuid, UINT64 *NewValue, UINT64 ValueLength, PVOID Context){
  NTSTATUS v4; 
  __int64 v5; 
  _ETHREAD *CurrentThread; 
  ULONG_PTR *i; 
  void(__fastcall *v9)(__int64, char *); 
  char v10[24]; 
  v4 = -1073741811;
  v5 = *(_QWORD *)&GUID_LOW_POWER_EPOCH.Data1 - *(_QWORD *)&SettingGuid->Data1;
  if( *(_QWORD *)&GUID_LOW_POWER_EPOCH.Data1 == *(_QWORD *)&SettingGuid->Data1 )
    v5 = *(_QWORD *)GUID_LOW_POWER_EPOCH.Data4 - *(_QWORD *)SettingGuid->Data4;
  if( !v5 && (_DWORD)ValueLength == 4 && NewValue )
  {
    *(_BYTE *)PopFxLowPowerEpoch = *(_BYTE *)NewValue;
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 242);
    ExAcquirePushLockSharedEx((UINT64)&PopFxPluginLock, 0i64);
    for( i = (ULONG_PTR *)PopFxPluginList; i != &PopFxPluginList; i = (ULONG_PTR *)*i )
    {
      v9 = (void(__fastcall *)(__int64, char *))i[12];
      v10[0] = 0;
      if( v9 )
      {
        v10[0] = *(_BYTE *)PopFxLowPowerEpoch;
        v9(24i64, v10);
      }
    }
    PopPepLowPowerEpoch = *(_BYTE *)PopFxLowPowerEpoch;
    if( _InterlockedCompareExchange64((volatile signed __int64 *)&PopFxPluginLock, 0i64, 17i64) != 17 )
      ExfReleasePushLockShared((INT64 *)&PopFxPluginLock);
    KeAbPostRelease(&PopFxPluginLock);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
    return 0;
  }
  return v4;
}

Referenced by:

No references.