CmpUpdateParentForEachSon
CHAR __fastcall CmpUpdateParentForEachSon(UINT64 a1, INT64 a2, CHAR a3){
unsigned int v4;
_CM_KEY_NODE *v6;
CHAR v7;
unsigned int v8;
unsigned int v9;
__int64 v10;
int v12[14];
UINT ChildCell;
int v14;
int v15;
v12[0] = -1;
ChildCell = 0;
v14 = -1;
v12[1] = 0;
v4 = a2;
v15 = 0;
v6 = (_CM_KEY_NODE *)(*(__int64(__fastcall **)(UINT64, INT64, int *))(a1 + 8))(a1, a2, v12);
if( !v6 )
return 0;
if( !a3 || (v7 = CmpMarkAllChildrenDirty(a1, v4)) != 0 )
{
v7 = 1;
v8 = 0;
v9 = v6->SubKeyCounts[0] + v6->SubKeyCounts[1];
if( v9 )
{
while( 1 )
{
CmpFindSubKeyByNumber((_HHIVE *)a1, v6, v8, &ChildCell);
if( ChildCell == -1 )
break;
v10 = (*(__int64(__fastcall **)(UINT64, _QWORD, int *))(a1 + 8))(a1, ChildCell, &v14);
if( !v10 )
break;
*(_DWORD *)(v10 + 16) = v4;
(*(void(__fastcall **)(UINT64, int *))(a1 + 16))(a1, &v14);
if( ++v8 >= v9 )
goto LABEL_11;
}
v7 = 0;
}
}
LABEL_11:
(*(void(__fastcall **)(UINT64, int *))(a1 + 16))(a1, v12);
return v7;
}Referenced by:
CmRenameKey
CmpCommitRenameKeyUoW
CmpLightWeightCommitRenameKeyUoW