EmpEvaluatePermuteRuleEntries
UINT8 __stdcall EmpEvaluatePermuteRuleEntries(
_EMP_RULE_DB_RECORD *RuleRecord,
UINT64 NumberOfEntryTypesToPermute,
_EMP_ENTRY_DB_RECORD *FixEntry,
UINT8 Reset){
UINT8 v4;
unsigned int i;
__int64 v8;
UINT64 v9;
__int64 v10;
UINT8 v11;
_QWORD *v12;
v4 = 0;
if( !(_DWORD)NumberOfEntryTypesToPermute )
return 1;
if( !Reset )
{
v9 = (unsigned int)(NumberOfEntryTypesToPermute - 1);
v10 = *(_QWORD *)(*((_QWORD *)RuleRecord + 7) + 8i64 * (unsigned int)v9);
if( (_DWORD)v9 )
v11 = EmpEvaluatePermuteRuleEntries(RuleRecord, v9, FixEntry, 0);
else
v11 = 1;
if( (_EMP_ENTRY_DB_RECORD *)v10 != FixEntry )
{
if( !v11 )
return v4;
v12 = *(_QWORD **)(v10 + 32);
if( *v12 != v10 + 40 )
{
*(_QWORD *)(v10 + 32) = *v12;
return v4;
}
*(_QWORD *)(v10 + 32) = *(_QWORD *)(v10 + 40);
}
if( !v11 )
return v4;
return 1;
}
for( i = 0; i < RuleRecord[12]; ++i )
{
v8 = *(_QWORD *)(*((_QWORD *)RuleRecord + 7) + 8i64 * i);
if( (_EMP_ENTRY_DB_RECORD *)v8 != FixEntry )
*(_QWORD *)(v8 + 32) = *(_QWORD *)(v8 + 40);
}
return v4;
}Referenced by:
EmpEvaluatePermuteRuleEntries
EmpEvaluateUpdateRuleEvalState