PopBatteryRemove

VOID __stdcall PopBatteryRemove(_POP_POLICY_DEVICE *PolicyDevice){
  void *v1; 
  void *v2; 
  void *v3; 
  _POP_POLICY_DEVICE *v5; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 

  IoCancelIrp((_KDPC *)PolicyDevice->Irp, v1, v2, v3);
  KeWaitForSingleObject((UINT64)&PolicyDevice[1].DeviceType, 0, 0, 0, 0i64);
  PopAcquireRwLockExclusive((_POP_RW_LOCK *)&PopCB);
  v5 = PolicyDevice + 1;
  Flink = v5->Link.Flink;
  if( v5->Link.Flink )
  {
    if( (_POP_POLICY_DEVICE *)Flink->Blink != v5 || (Blink = v5->Link.Blink, (_POP_POLICY_DEVICE *)Blink->Flink != v5) )
      __fastfail(3u);
    Blink->Flink = Flink;
    Flink->Blink = Blink;
    v5->Link.Flink = 0i64;
    LODWORD(Data) = Data - 1;
    ++dword_140C23598;
    byte_140C23538 = 1;
    PopBatteryQueueWork(3i64);
  }
  PopBatteryQueueWork(8i64);
  PopReleaseRwLock((_POP_RW_LOCK *)&PopCB);
  if( !--dword_140C23530 )
  {
    PopAcquirePolicyLock();
    if( *(&stru_140C23628 + 2102) )
    {
      *(&stru_140C23628 + 2102) = 0;
      PopResetCurrentPolicies();
    }
    PopReleasePolicyLock();
  }
}

Referenced by:

No references.