PopIrpWatchdogBugcheck

VOID __stdcall __noreturn PopIrpWatchdogBugcheck(_POP_IRP_DATA *IrpData){
  _POP_IRP_DATA *v1; 
  _DEVICE_OBJECT *Pdo; 
  _QWORD *DeviceNode; 
  __int64 v4; 
  _POP_IRP_DATA *v5; 
  unsigned __int16 *BugCheckParameter4; 
  int BugCheckParameter3[2]; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 

  v1 = IrpData;
  if( IrpData->PowerStateType == SystemPowerState )
  {
    Pdo = IrpData->Pdo;
    if( Pdo )
      DeviceNode = Pdo->DeviceObjectExtension->DeviceNode;
    else
      DeviceNode = 0i64;
    v4 = DeviceNode[33];
    if( v4 )
    {
      v5 = *(_POP_IRP_DATA **)(v4 + 72i64 * *(char *)(v4 + 66) + 200);
      if( v5->MinorFunction == IrpData->MinorFunction )
        v1 = v5;
    }
  }
  BugCheckParameter4 = (unsigned __int16 *)v1->Irp;
  PopInternalAddToDumpFile(0i64, 0i64, v1->Pdo);
  IoAddTriageDumpDataBlock(BugCheckParameter4, (_BYTE *)BugCheckParameter4[1]);
  IoAddTriageDumpDataBlock(v1, (_BYTE *)0x100);
  BugCheckParameter3[1] = 0;
  v8 = (__int64)&stru_140C23628 + 952;
  BugCheckParameter3[0] = 163840;
  v9 = (__int64)&PopIrpWorkerControlEvent + 128;
  v10 = *(&WheapDeferredInternalLogsEventLock + 337);
  v11 = *(&WheapDeferredInternalLogsEventLock + 338);
  KeBugCheckEx(0x9Fu, (PVOID)3, v1->Pdo, BugCheckParameter3, BugCheckParameter4);
}

Referenced by:

PopDequeueQuerySetIrp
PopIrpWatchdog