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