WheapCallInUsePageNotificationCallbacks

INT64 __fastcall WheapCallInUsePageNotificationCallbacks(INT64 a1, CHAR a2, CHAR a3){
  _BYTE *v7; 
  __int64 v8; 
  __int64 v9; 
  _BYTE *v10; 
  PVOID *i; 
  if( WheapInUsePageOfflineNotifyInit != 1 )
    return 3221225473i64;
  LODWORD(v7) = KeAbPreAcquire(&WheapInUsePageOfflineNotifyLock, 0i64, 0i64);
  v10 = v7;
  if( _interlockedbittestandset64((volatile signed __int32 *)&WheapInUsePageOfflineNotifyLock, 0i64) )
    ExfAcquirePushLockExclusiveEx(&WheapInUsePageOfflineNotifyLock, v7, &WheapInUsePageOfflineNotifyLock);
  if( v10 )
    v10[26] |= 1u;
  for( i = (PVOID *)WheapInUsePageOfflineNotifyList; i != &WheapInUsePageOfflineNotifyList; i = (PVOID *)*i )
  {
    LOBYTE(v9) = a3;
    LOBYTE(v8) = a2;
    ((void(__fastcall *)(INT64, __int64, __int64, PVOID))i[2])(a1, v8, v9, i[3]);
  }
  if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&WheapInUsePageOfflineNotifyLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((volatile INT64 *)&WheapInUsePageOfflineNotifyLock);
  KeAbPostRelease(&WheapInUsePageOfflineNotifyLock);
  return 0i64;
}

Referenced by:

WheapAttemptPhysicalPageOffline