ViValidateTriageRules

UINT64 __stdcall ViValidateTriageRules(_VERIFIER_TRIAGE_RULE *Rules, UINT64 RulesSize){
  _VERIFIER_TRIAGE_RULE *v2; 
  unsigned __int64 bf_0; 

  v2 = (_VERIFIER_TRIAGE_RULE *)((char *)Rules + RulesSize);
  if( Rules >= (_VERIFIER_TRIAGE_RULE *)((char *)Rules + RulesSize) )
  {
LABEL_5:
    DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: rules are ok.\n");
  }
  else
  {
    while( 1 )
    {
      bf_0 = (unsigned int)Rules->_bf_0;
      if( (bf_0 & 0x70000) == 0 )
        break;
      Rules = (_VERIFIER_TRIAGE_RULE *)((char *)Rules + (bf_0 >> 19) + 8);
      if( Rules > v2 )
      {
        DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: invalid rules structure! \n");
        return 0i64;
      }
      if( Rules >= v2 )
        goto LABEL_5;
    }
    DbgPrintEx(0x5Du, 3u, "CRASH TRIAGE: found zeroed rule during validation.\n");
  }
  return 1i64;
}

Referenced by:

VfTriageSystem