PopBatteryRemove

void __fastcall __noreturn 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(&PolicyDevice[1].DeviceType, Executive, 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(dword_140C23534) = dword_140C23534 - 1;
    ++dword_140C23598;
    byte_140C23538 = 1;
    PopBatteryQueueWork(3i64);
  }
  PopBatteryQueueWork(8i64);
  PopReleaseRwLock((UINT64)&PopCB);
  if( !--dword_140C23530 )
  {
    PopAcquirePolicyLock();
    if( byte_140C23E5E )
    {
      byte_140C23E5E = 0;
      PopResetCurrentPolicies();
    }
    PopReleasePolicyLock();
  }
}

Referenced by:

No references.