CmpProcessLightWeightUOW
__int64 __fastcall CmpProcessLightWeightUOW(__int64 a1, _QWORD *a2, __int64 a3, _LOOKASIDE_LIST_EX *a4){
int v4;
int v7;
int v8;
unsigned int v9;
__int64 v11;
_LIST_ENTRY DeferredPostAsync;
DeferredPostAsync.Blink = &DeferredPostAsync;
v4 = a3;
DeferredPostAsync.Flink = &DeferredPostAsync;
v7 = *(_DWORD *)(a1 + 68);
if( v7 > 7 )
{
if( v7 == 8 )
goto LABEL_12;
if( v7 == 9 )
{
if( (_DWORD)a3 )
{
CmpLightWeightCommitSetSecDescUoW((_CM_KCB_UOW *)a1, (_LARGE_INTEGER *)a2);
v11 = 10i64;
goto LABEL_15;
}
v8 = CmpLightWeightPrepareSetSecDescUoW((PCM_KCB_UOW)a1);
}
else
{
if( v7 <= 11 )
goto LABEL_12;
if( v7 != 12 )
{
if( v7 == 13 )
goto LABEL_12;
return(unsigned int)-1073741811;
}
if( (_DWORD)a3 )
{
if( (_DWORD)a3 == 1 )
CmpLightWeightCommitRenameKeyUoW((_CM_KCB_UOW *)a1, (_LARGE_INTEGER *)a2);
goto LABEL_12;
}
v8 = CmpLightWeightPrepareRenameKeyUoW((PCM_KCB_UOW)a1);
}
}
else
{
if( v7 == 7 )
goto LABEL_18;
if( v7 )
{
if( v7 == 1 )
goto LABEL_12;
if( v7 != 2 )
{
if( v7 != 3 )
{
if( v7 > 3 )
{
if( v7 <= 5 )
{
if( !(_DWORD)a3 )
{
v8 = CmpLightWeightPrepareSetValueKeyUoW((_CM_KCB_UOW *)a1);
goto LABEL_11;
}
CmpLightWeightCommitSetValueKeyUoW((_CM_KCB_UOW *)a1, (_LARGE_INTEGER *)a2);
v11 = 4i64;
LABEL_15:
CmpReportNotify(*(_QWORD *)(a1 + 48), 0i64, v11, (_LOOKASIDE_LIST_EX *)&DeferredPostAsync);
goto LABEL_12;
}
if( !(_DWORD)a3 )
{
v9 = CmpLightWeightPrepareDeleteValueKeyUoW((_CM_KCB_UOW *)a1);
if( (v9 & 0x80000000) != 0 )
return v9;
LABEL_28:
v8 = CmpLightWeightPrepareSetKeyUserFlags((_CM_KCB_UOW *)a1);
goto LABEL_11;
}
CmpLightWeightCommitDeleteValueKeyUoW((_CM_KCB_UOW *)a1, (_LARGE_INTEGER *)a2);
CmpReportNotify(*(_QWORD *)(a1 + 48), 0i64, 4i64, (_LOOKASIDE_LIST_EX *)&DeferredPostAsync);
LABEL_18:
if( v4 )
{
if( v4 == 1 )
CmpLightWeightCommitSetUserFlagsUoW((_CM_KCB_UOW *)a1, (_LARGE_INTEGER *)a2);
goto LABEL_12;
}
goto LABEL_28;
}
return(unsigned int)-1073741811;
}
LABEL_12:
v9 = 0;
CmpSignalDeferredPosts(&DeferredPostAsync);
return v9;
}
if( (_DWORD)a3 )
{
CmpReportNotify(*(_QWORD *)(a1 + 48), 0i64, 1i64, (_LOOKASIDE_LIST_EX *)&DeferredPostAsync);
CmpLightWeightCommitDeleteKeyUoW((_CM_KCB_UOW *)a1, (_LARGE_INTEGER *)a2);
goto LABEL_12;
}
v8 = CmpLightWeightPrepareDeleteKeyUoW((PPVOID)a1, (INT64)a4);
}
else
{
if( (_DWORD)a3 )
{
CmpLightWeightCommitAddKeyUoW((_CM_KCB_UOW *)a1, (_LARGE_INTEGER *)a2);
v11 = 1i64;
goto LABEL_15;
}
v8 = CmpLightWeightPrepareAddKeyUoW((PCM_KCB_UOW)a1);
}
}
LABEL_11:
v9 = v8;
if( v8 >= 0 )
goto LABEL_12;
return v9;
}Referenced by:
CmpCommitPreparedLightWeightTransaction
CmpPrepareLightWeightTransaction