CmpCommitAddKeyUoW
__int64 __fastcall CmpCommitAddKeyUoW(__int64 a1, __int64 *a2){
UINT64 v2;
__int64 v3;
unsigned int v5;
__int64 v6;
UINT64 v7;
UINT64 v8;
__int64 v9;
unsigned int v10;
__int64 v11;
UINT64 v12;
__int64 v13;
unsigned __int16 v14;
unsigned int v15;
unsigned int v16;
CHAR v18;
UINT64 v19;
__int64 v20;
__int64 *v21;
__int64 v22;
v21 = a2;
v2 = *(_QWORD *)(a1 + 48);
v3 = *(int *)(a1 + 72);
v5 = -1;
v6 = *(_QWORD *)(v2 + 72);
v7 = *(_QWORD *)(v2 + 32);
v8 = *(_QWORD *)(v6 + 32);
v22 = 0xFFFFFFFFi64;
v20 = 0xFFFFFFFFi64;
v9 = (*(__int64(__fastcall **)(UINT64, _QWORD, __int64 *))(v8 + 8))(
v8,
*(unsigned int *)(*(_QWORD *)(v2 + 72) + 40i64),
&v22);
if( HvMarkCellDirty(v7, *(unsigned int *)(v2 + 40), 1)
&& HvMarkCellDirty(v8, *(unsigned int *)(v6 + 40), 1)
&& HvMarkCellDirty(v8, *(unsigned int *)(v9 + 4 * v3 + 28), 1) )
{
LODWORD(v19) = v3;
v10 = CmpCopyKeyPartial(v7, *(unsigned int *)(v2 + 40), v8, *(unsigned int *)(v6 + 40), 38, v18, v19);
v5 = v10;
if( v10 == -1 || !CmpAddSubKey(v8, *(unsigned int *)(v6 + 40), v10) )
{
v16 = -1073741670;
}
else
{
*(_DWORD *)(a1 + 88) = *(_DWORD *)(v2 + 40);
*(_DWORD *)(v2 + 40) = v5;
v11 = (*(__int64(__fastcall **)(UINT64, _QWORD, __int64 *))(v7 + 8))(v7, v5, &v20);
v12 = *(unsigned int *)(v11 + 44);
*(_DWORD *)(v11 + 16) = *(_DWORD *)(v6 + 40);
CmpAssignSecurityToKcb(v2, v12, 0i64, 0, 0);
++*(_QWORD *)(v2 + 304);
++*(_QWORD *)(v6 + 304);
v13 = *v21;
*(_QWORD *)(v9 + 4) = *v21;
*(_QWORD *)(v6 + 168) = v13;
v14 = 2 * *(_WORD *)(v11 + 72);
if( (*(_BYTE *)(v11 + 2) & 0x20) == 0 )
v14 = *(_WORD *)(v11 + 72);
if( (unsigned __int16)*(_DWORD *)(v9 + 52) < (unsigned int)v14 )
{
*(_WORD *)(v9 + 52) = v14;
*(_WORD *)(v6 + 176) = v14;
}
v15 = *(unsigned __int16 *)(v11 + 74);
if( *(_DWORD *)(v9 + 56) < v15 )
*(_DWORD *)(v9 + 56) = v15;
v5 = -1;
v16 = 0;
(*(void(__fastcall **)(UINT64, __int64 *))(v7 + 16))(v7, &v20);
}
}
else
{
v16 = -1073741443;
}
if( v9 )
(*(void(__fastcall **)(UINT64, __int64 *))(v8 + 16))(v8, &v22);
if( v5 != -1 )
CmpFreeKeyByCell((_HHIVE *)v7, v5, 0);
return v16;
}Referenced by:
CmpTransMgrCommitUoW