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