.align 2
.thumb
Inicio:
push {lr}
b Ejecutar
Saltar:
ldr r0, .var_8008
mov r1, #0xFE
strb r1, [r0]
Ejecutar:
bl Saltar
Fin:
pop {pc}
.align 2
.var_8008: .word 0x20375E8
Para no postear una rutina de 150 lineas pongo esta que acabo de hacer y probar que es el problema reducido para hacerlo mas visible. Como te comente, guarda el valor FE en la variable 8008 una y otra vez, es decir, hace el "bl" como un "b", y al terminar la funcion salta a la siguiente que contiene el "bl" y vuelve a hacer todo el proceso, por eso opino que esta en bucle.