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