CmpLightWeightCommitRenameKeyUoW
void __fastcall CmpLightWeightCommitRenameKeyUoW(_QWORD *a1, _QWORD *a2, __int64 a3){
__int64 v6;
UINT64 v7;
__int64 v8;
__int64 v9;
unsigned __int16 v10;
UINT64 *v11;
ULONG_PTR v12;
__int64 v13[5];
int v14;
int v15;
int v16;
int v17;
v15 = 0;
v17 = 0;
v14 = -1;
v6 = a1[6];
v16 = -1;
v7 = *(_QWORD *)(v6 + 32);
CmpUpdateParentForEachSon(v7, *(unsigned int *)(v6 + 40), 0);
++*(_QWORD *)(a1[6] + 304i64);
v8 = (*(__int64(__fastcall **)(UINT64, _QWORD, int *))(v7 + 8))(v7, *(unsigned int *)(a1[6] + 40i64), &v14);
*(_DWORD *)(v8 + 16) = *(_DWORD *)(*(_QWORD *)(a1[6] + 72i64) + 40i64);
v9 = (*(__int64(__fastcall **)(UINT64, _QWORD, int *))(v7 + 8))(
v7,
*(unsigned int *)(*(_QWORD *)(a1[6] + 72i64) + 40i64),
&v16);
*(_QWORD *)(v9 + 4) = *a2;
*(_QWORD *)(*(_QWORD *)(a1[6] + 72i64) + 168i64) = *a2;
++*(_QWORD *)(*(_QWORD *)(a1[6] + 72i64) + 304i64);
v10 = 2 * *(_WORD *)(v8 + 72);
if( (*(_BYTE *)(v8 + 2) & 0x20) == 0 )
v10 = *(_WORD *)(v8 + 72);
if( (unsigned __int16)*(_DWORD *)(v9 + 52) < (unsigned int)v10 )
{
*(_WORD *)(v9 + 52) = v10;
*(_WORD *)(*(_QWORD *)(a1[6] + 72i64) + 176i64) = v10;
}
(*(void(__fastcall **)(UINT64, int *, _QWORD, __int64))(v7 + 16))(v7, &v14, v10, v9);
(*(void(__fastcall **)(UINT64, int *))(v7 + 16))(v7, &v16);
v13[1] = a1[6];
v13[0] = a1[11];
CmpSearchKeyControlBlockTreeEx(
(__int64(__fastcall *)(ULONG_PTR, ULONG_PTR, __int64, __int64))CmpRefreshParent,
v7,
a3,
(__int64)v13,
0);
CmpSearchForOpenSubKeys(a1[6], 1i64, 0i64);
HvFreeCell(v7, *(unsigned int *)(a1[11] + 40i64));
CmpFlushNotifiesOnKeyBodyList(a1[11], 8i64, a3, 1);
CmpMarkKeyUnbacked((_CM_KEY_CONTROL_BLOCK *)a1[11]);
CmpDiscardKcb(a1[11], a3);
v11 = (UINT64 *)a1[13];
if( *(_DWORD *)v11 == 1 )
CmpLightWeightSwapParentSubKeyList(v7, *(unsigned int *)(*(_QWORD *)(a1[6] + 72i64) + 40i64), a1[13]);
CmpLightWeightCleanupModifyKeyDataUoW(v7, v11);
v12 = a1[6];
a1[13] = 0i64;
CmpDereferenceKeyControlBlockWithLock(v12, a3, 0);
CmpDereferenceKeyControlBlockWithLock(a1[11], a3, 0);
}Referenced by:
CmpProcessLightWeightUOW