PopIrpWatchdogBugcheck

void __fastcall __noreturn PopIrpWatchdogBugcheck(__int64 a1){
  __int64 v1; 
  __int64 v2; 
  __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  unsigned __int16 *BugCheckParameter4; 
  ULONG_PTR BugCheckParameter3[7]; 
  v1 = a1;
  if( !*(_DWORD *)(a1 + 188) )
  {
    v2 = *(_QWORD *)(a1 + 24);
    if( v2 )
      v3 = *(_QWORD *)(*(_QWORD *)(v2 + 312) + 40i64);
    else
      v3 = 0i64;
    v4 = *(_QWORD *)(v3 + 264);
    if( v4 )
    {
      v5 = *(_QWORD *)(v4 + 72i64 * *(char *)(v4 + 66) + 200);
      if( *(_BYTE *)(v5 + 184) == *(_BYTE *)(a1 + 184) )
        v1 = v5;
    }
  }
  BugCheckParameter4 = *(unsigned __int16 **)(v1 + 16);
  PopInternalAddToDumpFile(0i64, 0i64, *(DEVICE_OBJECT **)(v1 + 24));
  IoAddTriageDumpDataBlock(BugCheckParameter4, BugCheckParameter4[1]);
  IoAddTriageDumpDataBlock((PVOID)v1, 0x100ui64);
  BugCheckParameter3[1] = (ULONG_PTR)&PopIrpList;
  BugCheckParameter3[0] = 163840i64;
  BugCheckParameter3[2] = (ULONG_PTR)&PopIrpThreadList;
  BugCheckParameter3[3] = ExWorkerQueue;
  BugCheckParameter3[4] = IoWorkerQueue;
  KeBugCheckEx(0x9Fu, 3ui64, *(_QWORD *)(v1 + 24), (ULONG_PTR)BugCheckParameter3, (ULONG_PTR)BugCheckParameter4);
}

Referenced by:

PopDequeueQuerySetIrp
PopIrpWatchdog