IopAddBugcheckTriageWorkQueue

NTSTATUS __stdcall IopAddBugcheckTriageWorkQueue(_TRIAGE_EX_WORK_QUEUE *TriageQueue){
  NTSTATUS v1; 
  int v3; 
  _QWORD **v4; 
  _QWORD *v5; 
  _QWORD *v6; 

  v1 = 0;
  v3 = 0;
  if( !KiIsAddressRangeValid((INT64)TriageQueue, 688i64) )
    return -1073741823;
  IoAddTriageDumpDataBlock(TriageQueue, (_BYTE *)0x2B0);
  v4 = (_QWORD **)((char *)TriageQueue + 672);
  v5 = *v4;
  if( *v4 )
  {
    v6 = v4;
    while( v5 != v4 && v3 < 10 )
    {
      ++v3;
      if( !KiIsAddressRangeValid((INT64)v5, 16i64) || (_QWORD *)v5[1] != v6 )
        return -1073741823;
      IopAddBugcheckTriageThread((_ETHREAD *)(v5 - 65));
      v6 = v5;
      v5 = (_QWORD *)*v5;
      if( !v5 )
        return v1;
    }
  }
  return v1;
}

Referenced by:

IopAddBugcheckPnpTriageData
IopAddBugcheckPnpWatchdogTriageData
IopAddBugcheckPowerTriageData