   ba    SudokuFin           ! Fin du programme
   nop
 
-VB19:
+ValiderBloc19:
   inc   %l1             ! Tester le nombre courant avec un autre chiffre dans le bloc
-  ba    VB15
-  nop
-
-VB20:
+  ba    ValiderBloc15
+  nop
+
+ValiderBloc20:
   set   resvalide, %o0
   call  printf
   nop

    Partie 5 : Validation par bloc
    ---------------------------------------------------
*/
VB00:
  set   validbloc1, %o0
  call  printf
  nop

  mov   0, %l0          ! Y

VB02:
  cmp   %l0, 3          ! Après avoir testé tous les blocs, on quitte le programme
  be    SudokuFin
  nop
 
  mov   0, %l1          ! X
  ba    VB04            ! On valide les blocs sur la rangée l1
  nop

VB03:
  inc   %l0             ! On passe à la rangée de bloc suivante
  ba    VB02
  nop

VB04:
  cmp   %l1, 3          ! Si on a testé les 3 blocs sur la rangée, on passe à la prochaine
  be    VB03
  nop

  /* start AFF */
  set   validbloc2, %o0
  umul  %l0, 3, %o1
  add   %l1, %o1, %o1
  call  printf
  nop
  /* end AFF */

  umul  %l1, 3,  %o0    ! Calculer l'indice du premier element du bloc dans le vecteur
  umul  %l0, 27, %o1
  add   %o0, %o1, %o2   ! Index calculé
  set   vecteur, %o3
  call  VB10            ! Valider le bloc commençant a cet indice
  nop

  inc   %l1             ! On passe au bloc suivant sur la même rangée
  ba    VB04
  nop

VB10:
  save  %sp, -96, %sp   ! On concerve les registres. L'index du début va se trouver dans i2
  mov   0, %l0
  
VB11:
  cmp   %l0, 21
  be    VB20            ! Restore
  nop

  mov   %l0, %o0        ! Si le nombre est un multiple de 3, on change de ligne dans le Sudoku

  nop
 
  ldub  [%l0+%l3], %l5          ! Charger le chiffre a tester dans le registre l5

  cmp   %l4, %l5                ! Comparer le chiffre courant avec le chiffre a tester pour s'assurer qu'ils ne sont pas identique
  be    LigneInvalide
