CmpRemoveSecurityCellList
void __fastcall CmpRemoveSecurityCellList(_HHIVE *Hive, INT64 SecurityCell){
unsigned int v3;
_CELL_DATA *v4;
_CELL_DATA *v5;
_CELL_DATA *v6;
_CELL_DATA *v7;
_CELL_DATA *v8;
int v9;
int v10;
int v11;
int v12;
int v13;
int v14;
v12 = 0;
v14 = 0;
v11 = -1;
v3 = SecurityCell;
v13 = -1;
v4 = 0i64;
v9 = -1;
v10 = 0;
v5 = Hive->GetCellRoutine(Hive, SecurityCell, &v9);
v6 = v5;
if( v5 )
{
v7 = Hive->GetCellRoutine(Hive, v5->u.KeyNode.LastWriteTime.anonymous_0.LowPart, &v11);
if( v7 )
{
v8 = Hive->GetCellRoutine(Hive, v6->u.KeyValue.Data, &v13);
v4 = v8;
if( v8 )
{
v7->u.KeyNode.LastWriteTime.anonymous_0.HighPart = v6->u.KeyNode.LastWriteTime.anonymous_0.HighPart;
v8->u.KeyNode.LastWriteTime.anonymous_0.LowPart = v6->u.KeyNode.LastWriteTime.anonymous_0.LowPart;
Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v11);
Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v13);
Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v9);
v7 = 0i64;
v4 = 0i64;
v6 = 0i64;
CmpRemoveFromSecurityCache((CMHIVE *)Hive, v3);
}
}
if( v6 )
Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v9);
if( v7 )
Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v11);
if( v4 )
Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v13);
}
}Referenced by:
CmpCommitSetSecurityUoW
CmpDereferenceSecurityNode
CmpFreeSecurityDescriptor
CmpLightWeightCommitSetSecDescUoW
CmpSetSecurityDescriptorInfo
CmpTransMgrFreeVolatileData