Vale, como ya sabras la instrucción JNE/JE es un salto condicional (lo mismo que viene a ser un "goto" en otros lenguajes de programación), en el caso de JNE/JE depende directamente del valor del register EFLAGS para que se llame el salto condicional a la dirección de memoria indicada, si al ejecutarse esa instrucción el programa esta finalizando de forma inesperada, es debido a que la dirección de memoria a la que se hace referencia es invalida o inexistente...
(si necesitas profundizar un poco más sobre comparaciones y paridad con el register EFLAGS, fijate en este enlace:
http://thehackerway.com/2011/04/20/assembly-en-gnulinux-para-hackers-newbies-parte-vii/ )
Ahora, yo que haria?
1. Si utilizas gdb pondria un punto de interrupción justo antes de que se ejecute esa instrucción y miraria los valores que tienes los registers (especialmente EFLGAS) con "info registers".
2. Me aseguraria que la dirección de memoria a la que se va "redireccionar" el ESP, realmente existe.
He visto un poco el fragmento de codigo que has posteado, en:
:1013932D 0F8593000000 jne 101393C6
Dice que se va a direcciónar el ESP a la dirección "101393C6" sino existe paridad con EFLAGS, pero donde esta esa dirección en tu codigo? lo pregunto porque no la veo por ningun sitio, si lo que has posteado es el código completo, ese puede ser el fallo.
Saludos.