Hola aguml de nuevo...
Yo lo primero particularmente no pondría el nombre del programa.
Yo veo lo siguiente:
1- Ese programa está compilado en Visual Basic, fíjate cómo llama a las funciones de Visual Basic (a la librería MSVBVM60.dll).
2- Fíjate una cosa muy importante. Ese salto que hace o no hace según, lo realiza o no tras comparar que en una zona de la memoria sea el valor = cero:
CMP DWORD PTR SS[EBP-58], 0
Ya te está dando un dato importante. Y ese valor de EBP-58 en la linea anterior te pone el valor de EAX.
En definitiva JGE salta si el valor es mayor o igual, es decir, si EAX es menor que 0 (FFFFFFFF) NO saltará.
Podrías intentar averiguar porqué EAX tiene ese valor poniendo BP.
Eso de poner directamente un salto a vba__End no está bien, porque VB va liberando de memoria variables que utiliza.. si no hubiese otra opción pues vale pero no en este caso.
Si dices que ya todo lo tienes arreglado pues ahí puedes poner un simple JMP sustituyendo al JGE y ya está arreglado.
Pero yo analizaría porqué EAX te da un valor menor que 0.