EmpProviderDeregisterEntry
VOID __stdcall EmpProviderDeregisterEntry(VOID *EntryHandle){
char *v1;
__int64 v3;
char **v4;
VOID **v5;
VOID **v6;
_QWORD *i;
if( EntryHandle )
{
v1 = (char *)EntryHandle + 24;
v3 = *((_QWORD *)EntryHandle + 3);
if( *(char **)(v3 + 8) != v1
|| (v4 = (char **)*((_QWORD *)v1 + 1), *v4 != v1)
|| (*v4 = (char *)v3,
*(_QWORD *)(v3 + 8) = v4,
v5 = (VOID **)*((_QWORD *)EntryHandle + 5),
v5[1] != (char *)EntryHandle + 40)
|| (v6 = (VOID **)*((_QWORD *)EntryHandle + 6), *v6 != (char *)EntryHandle + 40) )
{
__fastfail(3u);
}
*v6 = v5;
v5[1] = v6;
for( i = *(_QWORD **)(*(_QWORD *)EntryHandle + 72i64); i; i = (_QWORD *)*i )
EmpQueueRuleUpdateState((_EMP_RULE_DB_RECORD *)*(i - 1), 0i64);
ExFreePoolWithTag(EntryHandle, 0x72704D45u);
}
}Referenced by:
EmProviderDeregister
EmProviderDeregisterEntry