patch 8.2.3610: crash when ModeChanged triggered too early

Problem:    Crash when ModeChanged triggered too early.
Solution:   Trigger ModeChanged after setting VIsual.
diff --git a/src/normal.c b/src/normal.c
index 11b61f9..059baee 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -5778,7 +5778,6 @@
     VIsual_mode = c;
     VIsual_active = TRUE;
     VIsual_reselect = TRUE;
-    trigger_modechanged();
 
     // Corner case: the 0 position in a tab may change when going into
     // virtualedit.  Recalculate curwin->w_cursor to avoid bad highlighting.
@@ -5793,6 +5792,7 @@
     foldAdjustVisual();
 #endif
 
+    trigger_modechanged();
     setmouse();
 #ifdef FEAT_CONCEAL
     // Check if redraw is needed after changing the state.
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 957f248..bea1b76 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -2037,7 +2037,15 @@
 func Test_recursive_ModeChanged()
   au! ModeChanged * norm 0u
   sil! norm 
-  au!
+  au! ModeChanged
+endfunc
+
+func Test_ModeChanged_starts_visual()
+  " This was triggering ModeChanged before setting VIsual, causing a crash.
+  au! ModeChanged * norm 0u
+  sil! norm 
+
+  au! ModeChanged
 endfunc
 
 " Test toggling of input method. See :help i_CTRL-^
diff --git a/src/version.c b/src/version.c
index 55928db..d301120 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3610,
+/**/
     3609,
 /**/
     3608,