CmpStartRMLogs

__int64 __fastcall CmpStartRMLogs(__int64 a1){
  int v1; 
  unsigned int v3; 
  bool v5; 
  __int64 v6; 
  NTSTATUS started; 
  UUID Uuid; 
  v1 = *(_DWORD *)(a1 + 104);
  v3 = 0;
  Uuid = 0i64;
  if( (v1 & 8) != 0 )
  {
    return(unsigned int)-1073741431;
  }
  else if( (v1 & 1) == 0 )
  {
    v5 = CmpUuidCreate(&Uuid) >= 0;
    v6 = (*(_DWORD *)(a1 + 104) & 2) != 0 ? 4 : 0;
    CmpLockRegistryFreezeAware(0);
    started = CmpStartRMLog((_CM_RM *)a1, 0i64);
    v3 = started;
    if( started < 0 && started != -1073741697 && started != -1073741757 && started != -1073741670 && v5 )
    {
      *(_DWORD *)(a1 + 104) &= ~2u;
      v3 = CmpStartRMLog((_CM_RM *)a1, &Uuid);
    }
    CmpUnlockRegistry();
    *(_DWORD *)(v6 + a1 + 108) = v3;
  }
  return v3;
}

Referenced by:

CmpTransInitializeTransaction