PopFreeWakeSource

VOID __stdcall PopFreeWakeSource(_POP_WAKE_SOURCE *WakeSource){
  VOID *v1; 
  _POP_WAKE_SOURCE v2; 
  VOID *v4; 
  void *v5; 
  void *v6; 
  void *v7; 

  v2 = WakeSource[4];
  if( v2 )
  {
    if( (unsigned int)(v2 - 2) <= 1 )
    {
      v4 = (VOID *)*((_QWORD *)WakeSource + 3);
      if( v4 )
        ExFreePoolEx(v4, v1);
    }
  }
  else
  {
    v5 = (void *)*((_QWORD *)WakeSource + 4);
    if( v5 )
      ExFreePoolWithTag(v5, 0x206D654Du);
    v6 = (void *)*((_QWORD *)WakeSource + 6);
    if( v6 )
      ExFreePoolWithTag(v6, 0x206D654Du);
    v7 = (void *)*((_QWORD *)WakeSource + 8);
    if( v7 )
      ExFreePoolWithTag(v7, 0x206D654Du);
  }
  ExFreePoolWithTag(WakeSource, 0x206D654Du);
}

Referenced by:

PopProcessWakeSourceWork
PopUnlinkWakeSources
PopUpdateWakeSourceWorker