PnpWatchdogExtractTriageInformation
_QWORD *__fastcall PnpWatchdogExtractTriageInformation(
__int64 a1,
_QWORD *a2,
_LIST_ENTRY **a3,
_QWORD *a4,
_QWORD *a5){
int v5;
__int64 v6;
__int64 v7;
int v8;
int v9;
int v10;
int v11;
__int64 v12;
__int64 v13;
_QWORD *v14;
__int64 v15;
_QWORD *result;
v5 = *(_DWORD *)(a1 + 16);
v6 = 0i64;
*a2 = 0i64;
v7 = 0i64;
v8 = v5 - 1;
if( v8 )
{
v9 = v8 - 1;
if( v9 )
{
v10 = v9 - 1;
if( v10 )
{
v11 = v10 - 1;
if( v11 )
{
if( v11 != 1 )
__fastfail(5u);
v12 = *(_QWORD *)(a1 + 24);
v6 = *(_QWORD *)(v12 + 8);
*a3 = *(_LIST_ENTRY **)(v12 + 16);
}
else
{
v13 = *(_QWORD *)(a1 + 24);
v6 = *(_QWORD *)(v13 + 16);
*a3 = *(_LIST_ENTRY **)(v13 + 24);
*a2 = *(_QWORD *)(v13 + 8);
}
}
else
{
v14 = *(_QWORD **)(a1 + 24);
*a3 = (_LIST_ENTRY *)*(&PnpReplaceEvent + 1016);
v7 = v14[1];
*a2 = *v14;
}
}
else
{
*a3 = (_LIST_ENTRY *)qword_140CEC8C0[0];
v15 = *(_QWORD *)(*(_QWORD *)(a1 + 24) + 16i64);
*a2 = v15;
if( v15 )
v7 = *(_QWORD *)(v15 + 32);
}
}
else
{
*a3 = (_LIST_ENTRY *)PnpDeviceEventThread;
v7 = *(_QWORD *)(*(_QWORD *)(a1 + 24) + 152i64);
if( v7 )
*a2 = *(_QWORD *)(*(_QWORD *)(v7 + 312) + 40i64);
}
if( a4 )
*a4 = v7;
result = a5;
if( a5 )
*a5 = v6;
return result;
}Referenced by:
PnpWatchdogBugcheck
PnpWatchdogEtwWrite