ViFindTriageRule

_VERIFIER_TRIAGE_RULE *__stdcall ViFindTriageRule(_VERIFIER_TRIAGE_RULE *Rules, UINT64 RulesSize, UINT64 CrashCode){
  _VERIFIER_TRIAGE_RULE *v3; 
  _VERIFIER_TRIAGE_RULE *v4; 
  unsigned __int64 bf_0; 

  v3 = (_VERIFIER_TRIAGE_RULE *)((char *)Rules + RulesSize);
  v4 = Rules;
  if( Rules < (_VERIFIER_TRIAGE_RULE *)((char *)Rules + RulesSize) )
  {
    while( 1 )
    {
      bf_0 = (unsigned int)v4->_bf_0;
      if( (v4->_bf_0 & 0x70000) == 0 )
      {
        DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: zeroed rules structure(hit an invalid type rule).\n");
        return 0i64;
      }
      if( (HIWORD(v4->_bf_0) & 7) == 1 )
        break;
      if( (HIWORD(v4->_bf_0) & 7) == 2 )
        goto LABEL_7;
LABEL_8:
      if( v4 >= v3 )
        goto LABEL_9;
    }
    if( (unsigned __int16)CrashCode == (unsigned __int16)bf_0 )
    {
      DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: rule was found for crash code %X.\n", (unsigned int)CrashCode);
      return v4;
    }
LABEL_7:
    v4 = (_VERIFIER_TRIAGE_RULE *)((char *)v4 + (bf_0 >> 19) + 8);
    goto LABEL_8;
  }
LABEL_9:
  DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: no rule found for crash code %X.\n", (unsigned int)CrashCode);
  return 0i64;
}

Referenced by:

VfTriageSystem