PopFinalizeWakeInfo

NTSTATUS __fastcall PopFinalizeWakeInfo(__int64 a1){
  NTSTATUS result; 
  __int64 **v3; 
  __int64 *i; 
  void *v5; 
  void *v6; 

  result = KeSetEvent((PRKEVENT)((char *)&stru_140C23628 + 2936), 0, 0);
  v3 = (__int64 **)(a1 + 24);
  for( i = *v3; i != (__int64 *)v3; i = (__int64 *)*i )
  {
    if( !*((_DWORD *)i + 4) )
    {
      v5 = (void *)i[6];
      if( v5 )
      {
        result = (unsigned int)ExFreePoolWithTag(v5, 0x206D654Du);
        *(_OWORD *)(i + 5) = 0i64;
      }
      v6 = (void *)i[8];
      if( v6 )
      {
        result = (unsigned int)ExFreePoolWithTag(v6, 0x206D654Du);
        *(_OWORD *)(i + 7) = 0i64;
      }
    }
  }
  return result;
}

Referenced by:

PopHandleWakeSources
PopTimeoutWakeTracking