PipDmgFlushQueueAndRestartDevices

PVOID *__fastcall PipDmgFlushQueueAndRestartDevices(){
  PVOID *v0; 
  PVOID v1; 
  PVOID *result; 
  _QWORD *v3; 
  PVOID P[2]; 
  if( !PipDmaGuardPolicy || PipDmaGuardPolicy == 3 )
    KeBugCheckEx(0xCAu, 0x11ui64, 0i64, 0i64, 0i64);
  P[1] = P;
  P[0] = P;
  PiDmaGuardQueueFlush((INT64)P);
  v0 = (PVOID *)P[0];
  if( P[0] == P )
    goto LABEL_6;
  do
  {
    v1 = v0[2];
    v0 = (PVOID *)*v0;
    PipDmgRequestRestartOnBlockedDevice(v1);
  }
  while( v0 != P );
  while( 1 )
  {
    v0 = (PVOID *)P[0];
LABEL_6:
    result = P;
    if( v0 == P )
      break;
    if( v0[1] != P || (v3 = *v0, *((PVOID **)*v0 + 1) != v0) )
      __fastfail(3u);
    P[0] = *v0;
    v3[1] = P;
    PipDgqFreeEntry(v0);
  }
  return result;
}

Referenced by:

PipDmgConsoleUnlockCallback
PipDmgReevaluateQueue