En los programas en los que he conseguido hacerlos funcionar, lo que he hecho ha sido únicamente cambiar el salto condicional, en vez de entra en el call previo y cambiar el valor por "2" para que después la comparación sea la correcta. ¿Por qué tú has profundizado más para saber de dónde trae el valor?
a veces hay que profundizar en la raiz del valor para no tener que hacer o controlar muchas modificaciones, imaginate un programa en que para cada operación que va a realizar en otras partes del codigo compruebe este mismo valor y tome la decision de saltar o no, tendriamos que buscar y forzar muchos saltos, y si encontramos ese punto identico para todas las comprobaciones relacionada, nos ahorramos mucho trabajo.
Por ejemplo en tu programa cuando estas en el inicio del call donde se debe mover el valor 02 al registro EAX, en la ventana de información del desensamblado te informa que ese call se llama desde 2 lugares distintos, mira la imagen de abajo.
Entonces o cambias los 2 saltos que existiran despues de las 2 llamadas, o aqui fuerzas para que siempre mueva el valor correcto, y asi nos aseguramos que se llame desde donde se llame siempre va a dar el valor correcto, y con ellos nos aseguramos que las demas decisiones posteriores serán las correctas.
.............
En cuanto a la direccion de memoria de mi ordenador [011377F8] equivale en el tuyo a la de [00DE77F8], cuando pares con un breakpoint en 0062F3EA, en el Dump de la memoria tendras en 00DE77F9 el valor 02, y mira en ese momento que valor tienes en 00DE77F8, que tambien puede ser decisivo en otras partes del programa.