CmpMarkValueDataDirty
CHAR __fastcall CmpMarkValueDataDirty(UINT64 a1, INT64 a2){
__int64 v3;
unsigned int v5;
unsigned int v6;
CHAR v7;
__int64(__fastcall *v9)(UINT64, __int64, int *);
__int64 v10;
__int64 v11;
__int64 v12;
__int64 v13;
unsigned __int16 v14;
UINT64 v15;
int v16;
int v17;
int v18;
int v19;
v3 = *(unsigned int *)(a2 + 8);
if( (_DWORD)v3 == -1 )
return 1;
v5 = *(_DWORD *)(a2 + 4);
v6 = v5 + 0x80000000;
if( v5 < 0x80000000 )
v6 = *(_DWORD *)(a2 + 4);
if( v5 >= 0x80000000 )
return 1;
if( *(_DWORD *)(a1 + 212) < 4u || v6 - 16345 > 0x7FFFC026 )
goto LABEL_7;
v18 = -1;
v19 = 0;
v17 = 0;
v9 = *(__int64(__fastcall **)(UINT64, __int64, int *))(a1 + 8);
v10 = 0i64;
v16 = -1;
v11 = v9(a1, v3, &v18);
v12 = v11;
if( !v11 )
return 0;
v13 = *(unsigned int *)(v11 + 4);
if( (_DWORD)v13 == -1 )
goto LABEL_18;
v10 = (*(__int64(__fastcall **)(UINT64, __int64, int *))(a1 + 8))(a1, v13, &v16);
if( !v10 )
{
v7 = 0;
goto LABEL_21;
}
v14 = 0;
if( *(_WORD *)(v12 + 2) )
{
while( 1 )
{
v15 = *(unsigned int *)(v10 + 4i64 * v14);
if( (_DWORD)v15 != -1 && !HvpMarkCellDirty(a1, v15, 0) )
break;
if( ++v14 >= *(_WORD *)(v12 + 2) )
goto LABEL_17;
}
v7 = 0;
goto LABEL_19;
}
LABEL_17:
v7 = 0;
if( HvpMarkCellDirty(a1, *(unsigned int *)(v12 + 4), 0) )
LABEL_18:
v7 = 1;
LABEL_19:
if( v10 )
(*(void(__fastcall **)(UINT64, int *))(a1 + 16))(a1, &v16);
LABEL_21:
(*(void(__fastcall **)(UINT64, int *))(a1 + 16))(a1, &v18);
if( !v7 )
return v7;
LABEL_7:
v7 = 0;
if( HvpMarkCellDirty(a1, *(unsigned int *)(a2 + 8), 0) )
return 1;
return v7;
}Referenced by:
CmDeleteValueKey
CmpCommitDeleteValueKeyUoW
CmpLightWeightPrepareDeleteValueKeyUoW
CmpLightWeightPrepareSetValueKeyUoW
CmpMarkKeyDirty
CmpMarkKeyValuesDirty
CmpSetValueKeyExisting