CmpMarkCurrentValueDirty
WCHAR __stdcall CmpMarkCurrentValueDirty(WCHAR SourceCharacter){
__int64 v1;
UINT64 v2;
_CM_KEY_NODE *v3;
unsigned int ValueByName;
UINT Cell;
int v7;
int v8;
v7 = -1;
v2 = SourceCharacter;
v8 = 0;
v3 = (_CM_KEY_NODE *)(*(__int64(__fastcall **)(WCHAR, __int64, int *))(SourceCharacter + 8i64))(
SourceCharacter,
v1,
&v7);
if( v3 )
{
Cell = 0;
CmpFindSubKeyByNameWithStatus((_HHIVE *)v2, v3, &CmpSelectString, &Cell);
LOWORD(v3) = (*(__int64(__fastcall **)(UINT64, int *))(v2 + 16))(v2, &v7);
if( Cell != -1 )
{
v3 = (_CM_KEY_NODE *)(*(__int64(__fastcall **)(UINT64, _QWORD, int *))(v2 + 8))(v2, Cell, &v7);
if( v3 )
{
ValueByName = CmpFindValueByName((_HHIVE *)v2, v3, (_UNICODE_STRING *)&CmpCurrentString);
LOWORD(v3) = (*(__int64(__fastcall **)(UINT64, int *))(v2 + 16))(v2, &v7);
if( ValueByName != -1 )
LOBYTE(v3) = HvpMarkCellDirty(v2, ValueByName, 0);
}
}
}
return(unsigned __int16)v3;
}Referenced by:
CmpLoadHiveThread