I'm sorry if this is a known bug.
my.pasm ( useless, just a contrived example ):
set I1, 12
FOO:
if I1, FOO
BAR:
if I1, BAR
if I1, FOO
end
assembly:
0x816bda8: push %ebp
0x816bda9: mov %esp,%ebp
0x816bdab: int3
0x816bdac: movl $0xc,0x815150c
0x816bdb6: mov %esi,%esi
0x816bdb8: mov 0x815150c,%eax
0x816bdbd: cmp $0x0,%eax
0x816bdc0: jne 0x816bdb7 <== wrong
0x816bdc6: nop
0x816bdc7: mov 0x815150c,%eax
0x816bdcc: cmp $0x0,%eax
0x816bdcf: jne 0x816bdc6 <== correct
0x816bdd5: nop
0x816bdd6: mov 0x815150c,%eax
0x816bddb: cmp $0x0,%eax
0x816bdde: jne 0x816bdb7 <== wrong
0x816bde4: nop
0x816bde5: leave
0x816bde6: ret
If I move the "set I1, 12" after the foo label,
both jumps are correct.
Regards
Mattia