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