IoFindDeviceThatFailedIrp

_DEVICE_OBJECT *__stdcall IoFindDeviceThatFailedIrp(_IRP *Irp){
  unsigned int StackCount; 
  unsigned int v2; 
  void **v3; 

  StackCount = Irp->StackCount;
  v2 = 0;
  if( Irp->IoStatus.Status >= 0 )
    return 0i64;
  v3 = &Irp->Tail.DriverContext[9 * StackCount + 2];
  if( !StackCount )
    return 0i64;
  while( (*((_BYTE *)v3 + 3) & 2) == 0 )
  {
    ++v2;
    v3 -= 9;
    if( v2 >= StackCount )
      return 0i64;
  }
  return(_DEVICE_OBJECT *)v3[5];
}

Referenced by:

PnpDeviceCompletionRoutine
PnpDiagnosticCompletionRoutine
PopDiagTraceIrpFinish
PopDiagTraceIrpFinishTelemetry
PopSystemIrpCompletion