KdDeregisterPowerHandler

NTSTATUS __stdcall KdDeregisterPowerHandler(PVOID CallbackHandle){
  unsigned __int8 CurrentIrql; 
  __int64 *v3; 
  __int64 *v4; 
  char v5; 
  __int64 *v6; 
  __int64 **v8; 
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(0xFui64);
  KxAcquireSpinLock(&KdpPowerSpinLock);
  v3 = (__int64 *)KdpPowerListHead;
  v4 = 0i64;
  v5 = 0;
  if( (__int64 *)KdpPowerListHead != &KdpPowerListHead )
  {
    while( 1 )
    {
      v6 = (__int64 *)*v3;
      v4 = v3;
      if( CallbackHandle == v3 )
        break;
      v3 = (__int64 *)*v3;
      if( v6 == &KdpPowerListHead )
        goto LABEL_4;
    }
    v8 = (__int64 **)v3[1];
    if( (__int64 *)v6[1] != v3 || *v8 != v3 )
      __fastfail(3u);
    *v8 = v6;
    v5 = 1;
    v6[1] = (__int64)v8;
  }
LABEL_4:
  KxReleaseSpinLock(&KdpPowerSpinLock);
  __writecr8(CurrentIrql);
  if( !v5 )
    return -1073741275;
  ExFreePoolWithTag(v4, 0x6F49644Bu);
  return 0;
}

Referenced by:

No references.