Il blocco da 100 a 300 è come se fosse una procedura; la parte tra 100 e 200 è come se fosse un if-else al contrario.

Il punto qui è che il blocco "grosso" della procedura a logica andrebbe eseguito più volte, ma non vedo nessun GOTO 100, per cui partendo da level=5 la procedura viene eseguita una volta, vengono riempiti i vari array solo relativamente al livello corrente e il programma termina.

... comunque, questo codice è strutturato come se fosse assembly.