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