From a7457e66cf888ca727a21c330df204c1311dbce0 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin (Intel)" Date: Fri, 10 Oct 2025 13:03:33 -0700 Subject: [PATCH] Fix matching of branch instructions with prefixes and sizes Matching of branch instructions with prefixes and sizes is, to say the least, tricky. Work through it, and add a new macro to help. Fixes: https://github.com/netwide-assembler/nasm/issues/144 Signed-off-by: H. Peter Anvin (Intel) --- asm/assemble.c | 46 +- asm/parser.c | 7 +- asm/warnings.dat | 13 +- doc/changes.src | 7 +- test/jmpxx.asm | 3297 ++++++++++++++++++++++++++++++++++ test/jmpxx.pl | 97 + travis/test/_version.json | 2 +- travis/test/jmpxx-o0.bin16.t | Bin 0 -> 1621 bytes travis/test/jmpxx-o0.bin32.t | Bin 0 -> 1825 bytes travis/test/jmpxx-o0.bin64.t | Bin 0 -> 1073 bytes travis/test/jmpxx-o1.bin16.t | Bin 0 -> 1657 bytes travis/test/jmpxx-o1.bin32.t | Bin 0 -> 1873 bytes travis/test/jmpxx-o1.bin64.t | Bin 0 -> 1105 bytes travis/test/jmpxx-ox.bin16.t | Bin 0 -> 1601 bytes travis/test/jmpxx-ox.bin32.t | Bin 0 -> 1793 bytes travis/test/jmpxx-ox.bin64.t | Bin 0 -> 1049 bytes travis/test/jmpxx.asm | 3297 ++++++++++++++++++++++++++++++++++ travis/test/jmpxx.json | 76 + x86/iflags.ph | 4 +- x86/insns.dat | 74 +- x86/insns.pl | 6 +- x86/preinsns.pl | 49 +- 22 files changed, 6875 insertions(+), 100 deletions(-) create mode 100644 test/jmpxx.asm create mode 100644 test/jmpxx.pl create mode 100644 travis/test/jmpxx-o0.bin16.t create mode 100644 travis/test/jmpxx-o0.bin32.t create mode 100644 travis/test/jmpxx-o0.bin64.t create mode 100644 travis/test/jmpxx-o1.bin16.t create mode 100644 travis/test/jmpxx-o1.bin32.t create mode 100644 travis/test/jmpxx-o1.bin64.t create mode 100644 travis/test/jmpxx-ox.bin16.t create mode 100644 travis/test/jmpxx-ox.bin32.t create mode 100644 travis/test/jmpxx-ox.bin64.t create mode 100644 travis/test/jmpxx.asm create mode 100644 travis/test/jmpxx.json diff --git a/asm/assemble.c b/asm/assemble.c index 0966a6fb..acb3b02a 100644 --- a/asm/assemble.c +++ b/asm/assemble.c @@ -1400,28 +1400,9 @@ static int64_t calcsize(insn *ins, const struct itemplate * const temp) ins->itemp = temp; /* Instruction template */ eat = EA_SCALAR; /* Expect a scalar EA */ - /* Default operand size */ + /* Default operand size (prefixes are handled in the byte code) */ ins->op_size = bits != 16 ? 32 : 16; - if (bits == 64) { - if (ins->prefixes[PPS_ASIZE] == P_A16) { - nasm_warn(WARN_PREFIX_BADMODE_A16, - "a64 prefix invalid in 64-bit mode"); - ins->prefixes[PPS_ASIZE] = 0; - } - } else { - if (ins->prefixes[PPS_OSIZE] == P_O64) { - nasm_warn(WARN_PREFIX_BADMODE_O64, - "o64 prefix invalid in %d-bit mode", bits); - ins->prefixes[PPS_OSIZE] = P_none; - } - if (ins->prefixes[PPS_ASIZE] == P_A64) { - nasm_warn(WARN_PREFIX_BADMODE_A64, - "a64 prefix invalid in %d-bit mode", bits); - ins->prefixes[PPS_ASIZE] = P_none; - } - } - nasm_zero(need_pfx); while (*codes) { @@ -3061,7 +3042,7 @@ static enum match_result matches(const struct itemplate * const itemp, /* "Default" operand size (from mode and prefixes only) */ op_size = ins->op_size; - if (itemp_has(itemp, IF_NWSIZE) && op_size == 32) { + if (bits == 64 && itemp_has(itemp, IF_NWSIZE) && op_size == 32) { /* If this is an nw instruction, default to 64 bits in 64-bit mode */ op_size = bits; } @@ -3101,18 +3082,23 @@ static enum match_result matches(const struct itemplate * const itemp, /* Handle implied SHORT or NEAR */ if (unlikely(ttype & (NEAR|SHORT))) { + /* Treat BYTE as an alias for SHORT, ignoring size */ + if (isize[i] == BITS8) { + itype[i] |= SHORT; + isize[i] = 0; + } + /* An explicit SHORT or BITS8 cancels NEAR; are synonyms */ + if (itype[i] & SHORT) { + itype[i] &= ~NEAR; + } + /* NEAR is implicit unless otherwise specified */ + if (!(itype[i] & (FAR|SHORT))) { + itype[i] |= ttype & NEAR; + } if ((ttype & (NEAR|SHORT)) == (NEAR|SHORT)) { - /* Only a short form exists; allow both NEAR and SHORT */ + /* Only a short form exists; this is specially coded */ if (!(itype[i] & (FAR|ABS))) itype[i] |= NEAR|SHORT; - } else if ((itype[i] & SHORT) || isize[i] == BITS8) { - /* An explicit SHORT or BITS8 cancel NEAR; are synonyms */ - itype[i] &= ~NEAR; - if (!isize[i]) - isize[i] = BITS8; - } else if (!(itype[i] & (FAR|ABS|SHORT))) { - /* NEAR is implicit unless otherwise specified */ - itype[i] |= ttype & NEAR; } } diff --git a/asm/parser.c b/asm/parser.c index 219ce7a6..c0fba600 100644 --- a/asm/parser.c +++ b/asm/parser.c @@ -964,8 +964,10 @@ restart_parse: while (i == TOKEN_SPECIAL || i == TOKEN_SIZE) { switch (tokval.t_integer) { case S_BYTE: - if (!setsize) /* we want to use only the first */ + if (!setsize) { /* we want to use only the first */ + result->opt |= OPTIM_NO_Jcc_RELAX | OPTIM_NO_JMP_RELAX; op->type |= BITS8; + } setsize = 1; break; case S_WORD: @@ -1014,9 +1016,12 @@ restart_parse: op->type |= FAR; break; case S_NEAR: + /* This is not legacy behavior, even if it perhaps should be */ + /* result->opt |= OPTIM_NO_Jcc_RELAX | OPTIM_NO_JMP_RELAX; */ op->type |= NEAR; break; case S_SHORT: + result->opt |= OPTIM_NO_Jcc_RELAX | OPTIM_NO_JMP_RELAX; op->type |= SHORT; break; case S_ABS: diff --git a/asm/warnings.dat b/asm/warnings.dat index 5bfb8a70..0aead250 100644 --- a/asm/warnings.dat +++ b/asm/warnings.dat @@ -259,20 +259,11 @@ pragma-unknown [off] unknown \c{%pragma} facility or directive Warns about an unknown \c{%pragma} directive. This is not yet implemented for most cases. -prefix-badmode-a64 [err] a64 prefix invalid in 16/32-bit mode - Warns that an \c{a64} prefix was specified in 16- or 32-bit - mode. If the error is demoted to a warning or suppressed, the - prefix is ignored by the assembler. - prefix-badmode-o64 [err] o64 prefix invalid in 16/32-bit mode Warns that an \c{a64} prefix was specified in 16- or 32-bit mode. If the error is demoted to a warning or suppressed, the - prefix is ignored by the assembler. - -prefix-badmode-a16 [err] a16 prefix invalid in 64-bit mode - Warns that an \c{a16} prefix was specified in 64-bit mode. - If the error is demoted to a warning or suppressed, the - prefix is ignored by the assembler. + prefix is ignored by the assembler, but is likely to trigger + futher errors. prefix-bnd [on] invalid \c{BND} prefix =bnd diff --git a/doc/changes.src b/doc/changes.src index 33b5ec17..3b47191d 100644 --- a/doc/changes.src +++ b/doc/changes.src @@ -54,10 +54,9 @@ It is the production version of NASM since 2025. \b Hopefully fix building with OpenWatcom. \b Generate a warning, promoted to error by default, on the use of - \c{a64} or \c{o64} prefixes in 16- or 32-bit mode or \c{a16} - prefixes in 64-bit mode. Those prefixes are not encodable; if - demoted to a warning or suppressed the prefix is ignored, but - likely will generate additional, harder to debug, error messages. + \c{o64} prefixes in 16- or 32-bit mode. If demoted to a warning or + suppressed the prefix is ignored, but likely will trigger + subsequent, harder to debug, error messages. \S{cl-3.00} Version 3.00 diff --git a/test/jmpxx.asm b/test/jmpxx.asm new file mode 100644 index 00000000..c6f770d7 --- /dev/null +++ b/test/jmpxx.asm @@ -0,0 +1,3297 @@ +%pragma list options -befms +%ifndef ERR + %define ERR 0 +%endif +%macro now 1+.nolist + %if ERR || !(__BITS__ & 0x10) + %1 + %endif +%endmacro +%macro nod 1+.nolist + %if ERR || !(__BITS__ & 0x20) + %1 + %endif +%endmacro +%macro nowd 1+.nolist + %if ERR || !(__BITS__ & 0x30) + %1 + %endif +%endmacro +%macro noq 1+.nolist + %if ERR || !(__BITS__ & 0x40) + %1 + %endif +%endmacro +%macro nowq 1+.nolist + %if ERR || !(__BITS__ & 0x50) + %1 + %endif +%endmacro +%macro nodq 1+.nolist + %if ERR || !(__BITS__ & 0x60) + %1 + %endif +%endmacro +%macro bogus 1+.nolist + %if ERR + %1 + %endif +%endmacro + + section text1 +top: + times 128 nop + +here_jmp: + jmp $ + jmp short $ + jmp near $ + noq o16 jmp $ + noq o16 jmp short $ + noq o16 jmp near $ + noq o32 jmp $ + noq o32 jmp short $ + noq o32 jmp near $ + nowd o64 jmp $ + nowd o64 jmp short $ + nowd o64 jmp near $ + bogus jmp byte $ + bogus jmp byte short $ + bogus jmp byte near $ + bogus o16 jmp byte $ + bogus o16 jmp byte short $ + bogus o16 jmp byte near $ + bogus o32 jmp byte $ + bogus o32 jmp byte short $ + bogus o32 jmp byte near $ + bogus o64 jmp byte $ + bogus o64 jmp byte short $ + bogus o64 jmp byte near $ + noq jmp word $ + noq jmp word short $ + noq jmp word near $ + noq o16 jmp word $ + noq o16 jmp word short $ + noq o16 jmp word near $ + bogus o32 jmp word $ + bogus o32 jmp word short $ + bogus o32 jmp word near $ + bogus o64 jmp word $ + bogus o64 jmp word short $ + bogus o64 jmp word near $ + noq jmp dword $ + noq jmp dword short $ + noq jmp dword near $ + bogus o16 jmp dword $ + bogus o16 jmp dword short $ + bogus o16 jmp dword near $ + noq o32 jmp dword $ + noq o32 jmp dword short $ + noq o32 jmp dword near $ + bogus o64 jmp dword $ + bogus o64 jmp dword short $ + bogus o64 jmp dword near $ + nowd jmp qword $ + nowd jmp qword short $ + nowd jmp qword near $ + bogus o16 jmp qword $ + bogus o16 jmp qword short $ + bogus o16 jmp qword near $ + bogus o32 jmp qword $ + bogus o32 jmp qword short $ + bogus o32 jmp qword near $ + nowd o64 jmp qword $ + nowd o64 jmp qword short $ + nowd o64 jmp qword near $ + jmp strict $ + jmp strict short $ + jmp strict near $ + noq o16 jmp strict $ + noq o16 jmp strict short $ + noq o16 jmp strict near $ + noq o32 jmp strict $ + noq o32 jmp strict short $ + noq o32 jmp strict near $ + nowd o64 jmp strict $ + nowd o64 jmp strict short $ + nowd o64 jmp strict near $ + bogus jmp strict byte $ + bogus jmp strict byte short $ + bogus jmp strict byte near $ + bogus o16 jmp strict byte $ + bogus o16 jmp strict byte short $ + bogus o16 jmp strict byte near $ + bogus o32 jmp strict byte $ + bogus o32 jmp strict byte short $ + bogus o32 jmp strict byte near $ + bogus o64 jmp strict byte $ + bogus o64 jmp strict byte short $ + bogus o64 jmp strict byte near $ + noq jmp strict word $ + noq jmp strict word short $ + noq jmp strict word near $ + noq o16 jmp strict word $ + noq o16 jmp strict word short $ + noq o16 jmp strict word near $ + bogus o32 jmp strict word $ + bogus o32 jmp strict word short $ + bogus o32 jmp strict word near $ + bogus o64 jmp strict word $ + bogus o64 jmp strict word short $ + bogus o64 jmp strict word near $ + noq jmp strict dword $ + noq jmp strict dword short $ + noq jmp strict dword near $ + bogus o16 jmp strict dword $ + bogus o16 jmp strict dword short $ + bogus o16 jmp strict dword near $ + noq o32 jmp strict dword $ + noq o32 jmp strict dword short $ + noq o32 jmp strict dword near $ + bogus o64 jmp strict dword $ + bogus o64 jmp strict dword short $ + bogus o64 jmp strict dword near $ + nowd jmp strict qword $ + nowd jmp strict qword short $ + nowd jmp strict qword near $ + bogus o16 jmp strict qword $ + bogus o16 jmp strict qword short $ + bogus o16 jmp strict qword near $ + bogus o32 jmp strict qword $ + bogus o32 jmp strict qword short $ + bogus o32 jmp strict qword near $ + nowd o64 jmp strict qword $ + nowd o64 jmp strict qword short $ + nowd o64 jmp strict qword near $ + jmp top + bogus jmp short top + jmp near top + noq o16 jmp top + bogus o16 jmp short top + noq o16 jmp near top + noq o32 jmp top + bogus o32 jmp short top + noq o32 jmp near top + nowd o64 jmp top + bogus o64 jmp short top + nowd o64 jmp near top + bogus jmp byte top + bogus jmp byte short top + bogus jmp byte near top + bogus o16 jmp byte top + bogus o16 jmp byte short top + bogus o16 jmp byte near top + bogus o32 jmp byte top + bogus o32 jmp byte short top + bogus o32 jmp byte near top + bogus o64 jmp byte top + bogus o64 jmp byte short top + bogus o64 jmp byte near top + noq jmp word top + bogus jmp word short top + noq jmp word near top + noq o16 jmp word top + bogus o16 jmp word short top + noq o16 jmp word near top + bogus o32 jmp word top + bogus o32 jmp word short top + bogus o32 jmp word near top + bogus o64 jmp word top + bogus o64 jmp word short top + bogus o64 jmp word near top + noq jmp dword top + bogus jmp dword short top + noq jmp dword near top + bogus o16 jmp dword top + bogus o16 jmp dword short top + bogus o16 jmp dword near top + noq o32 jmp dword top + bogus o32 jmp dword short top + noq o32 jmp dword near top + bogus o64 jmp dword top + bogus o64 jmp dword short top + bogus o64 jmp dword near top + nowd jmp qword top + bogus jmp qword short top + nowd jmp qword near top + bogus o16 jmp qword top + bogus o16 jmp qword short top + bogus o16 jmp qword near top + bogus o32 jmp qword top + bogus o32 jmp qword short top + bogus o32 jmp qword near top + nowd o64 jmp qword top + bogus o64 jmp qword short top + nowd o64 jmp qword near top + jmp strict top + bogus jmp strict short top + jmp strict near top + noq o16 jmp strict top + bogus o16 jmp strict short top + noq o16 jmp strict near top + noq o32 jmp strict top + bogus o32 jmp strict short top + noq o32 jmp strict near top + nowd o64 jmp strict top + bogus o64 jmp strict short top + nowd o64 jmp strict near top + bogus jmp strict byte top + bogus jmp strict byte short top + bogus jmp strict byte near top + bogus o16 jmp strict byte top + bogus o16 jmp strict byte short top + bogus o16 jmp strict byte near top + bogus o32 jmp strict byte top + bogus o32 jmp strict byte short top + bogus o32 jmp strict byte near top + bogus o64 jmp strict byte top + bogus o64 jmp strict byte short top + bogus o64 jmp strict byte near top + noq jmp strict word top + bogus jmp strict word short top + noq jmp strict word near top + noq o16 jmp strict word top + bogus o16 jmp strict word short top + noq o16 jmp strict word near top + bogus o32 jmp strict word top + bogus o32 jmp strict word short top + bogus o32 jmp strict word near top + bogus o64 jmp strict word top + bogus o64 jmp strict word short top + bogus o64 jmp strict word near top + noq jmp strict dword top + bogus jmp strict dword short top + noq jmp strict dword near top + bogus o16 jmp strict dword top + bogus o16 jmp strict dword short top + bogus o16 jmp strict dword near top + noq o32 jmp strict dword top + bogus o32 jmp strict dword short top + noq o32 jmp strict dword near top + bogus o64 jmp strict dword top + bogus o64 jmp strict dword short top + bogus o64 jmp strict dword near top + nowd jmp strict qword top + bogus jmp strict qword short top + nowd jmp strict qword near top + bogus o16 jmp strict qword top + bogus o16 jmp strict qword short top + bogus o16 jmp strict qword near top + bogus o32 jmp strict qword top + bogus o32 jmp strict qword short top + bogus o32 jmp strict qword near top + nowd o64 jmp strict qword top + bogus o64 jmp strict qword short top + nowd o64 jmp strict qword near top + jmp there + bogus jmp short there + jmp near there + noq o16 jmp there + bogus o16 jmp short there + noq o16 jmp near there + noq o32 jmp there + bogus o32 jmp short there + noq o32 jmp near there + nowd o64 jmp there + bogus o64 jmp short there + nowd o64 jmp near there + bogus jmp byte there + bogus jmp byte short there + bogus jmp byte near there + bogus o16 jmp byte there + bogus o16 jmp byte short there + bogus o16 jmp byte near there + bogus o32 jmp byte there + bogus o32 jmp byte short there + bogus o32 jmp byte near there + bogus o64 jmp byte there + bogus o64 jmp byte short there + bogus o64 jmp byte near there + noq jmp word there + bogus jmp word short there + noq jmp word near there + noq o16 jmp word there + bogus o16 jmp word short there + noq o16 jmp word near there + bogus o32 jmp word there + bogus o32 jmp word short there + bogus o32 jmp word near there + bogus o64 jmp word there + bogus o64 jmp word short there + bogus o64 jmp word near there + noq jmp dword there + bogus jmp dword short there + noq jmp dword near there + bogus o16 jmp dword there + bogus o16 jmp dword short there + bogus o16 jmp dword near there + noq o32 jmp dword there + bogus o32 jmp dword short there + noq o32 jmp dword near there + bogus o64 jmp dword there + bogus o64 jmp dword short there + bogus o64 jmp dword near there + nowd jmp qword there + bogus jmp qword short there + nowd jmp qword near there + bogus o16 jmp qword there + bogus o16 jmp qword short there + bogus o16 jmp qword near there + bogus o32 jmp qword there + bogus o32 jmp qword short there + bogus o32 jmp qword near there + nowd o64 jmp qword there + bogus o64 jmp qword short there + nowd o64 jmp qword near there + jmp strict there + bogus jmp strict short there + jmp strict near there + noq o16 jmp strict there + bogus o16 jmp strict short there + noq o16 jmp strict near there + noq o32 jmp strict there + bogus o32 jmp strict short there + noq o32 jmp strict near there + nowd o64 jmp strict there + bogus o64 jmp strict short there + nowd o64 jmp strict near there + bogus jmp strict byte there + bogus jmp strict byte short there + bogus jmp strict byte near there + bogus o16 jmp strict byte there + bogus o16 jmp strict byte short there + bogus o16 jmp strict byte near there + bogus o32 jmp strict byte there + bogus o32 jmp strict byte short there + bogus o32 jmp strict byte near there + bogus o64 jmp strict byte there + bogus o64 jmp strict byte short there + bogus o64 jmp strict byte near there + noq jmp strict word there + bogus jmp strict word short there + noq jmp strict word near there + noq o16 jmp strict word there + bogus o16 jmp strict word short there + noq o16 jmp strict word near there + bogus o32 jmp strict word there + bogus o32 jmp strict word short there + bogus o32 jmp strict word near there + bogus o64 jmp strict word there + bogus o64 jmp strict word short there + bogus o64 jmp strict word near there + noq jmp strict dword there + bogus jmp strict dword short there + noq jmp strict dword near there + bogus o16 jmp strict dword there + bogus o16 jmp strict dword short there + bogus o16 jmp strict dword near there + noq o32 jmp strict dword there + bogus o32 jmp strict dword short there + noq o32 jmp strict dword near there + bogus o64 jmp strict dword there + bogus o64 jmp strict dword short there + bogus o64 jmp strict dword near there + nowd jmp strict qword there + bogus jmp strict qword short there + nowd jmp strict qword near there + bogus o16 jmp strict qword there + bogus o16 jmp strict qword short there + bogus o16 jmp strict qword near there + bogus o32 jmp strict qword there + bogus o32 jmp strict qword short there + bogus o32 jmp strict qword near there + nowd o64 jmp strict qword there + bogus o64 jmp strict qword short there + nowd o64 jmp strict qword near there +here_call: + call $ + bogus call short $ + call near $ + noq o16 call $ + bogus o16 call short $ + noq o16 call near $ + noq o32 call $ + bogus o32 call short $ + noq o32 call near $ + nowd o64 call $ + bogus o64 call short $ + nowd o64 call near $ + bogus call byte $ + bogus call byte short $ + bogus call byte near $ + bogus o16 call byte $ + bogus o16 call byte short $ + bogus o16 call byte near $ + bogus o32 call byte $ + bogus o32 call byte short $ + bogus o32 call byte near $ + bogus o64 call byte $ + bogus o64 call byte short $ + bogus o64 call byte near $ + noq call word $ + bogus call word short $ + noq call word near $ + noq o16 call word $ + bogus o16 call word short $ + noq o16 call word near $ + bogus o32 call word $ + bogus o32 call word short $ + bogus o32 call word near $ + bogus o64 call word $ + bogus o64 call word short $ + bogus o64 call word near $ + noq call dword $ + bogus call dword short $ + noq call dword near $ + bogus o16 call dword $ + bogus o16 call dword short $ + bogus o16 call dword near $ + noq o32 call dword $ + bogus o32 call dword short $ + noq o32 call dword near $ + bogus o64 call dword $ + bogus o64 call dword short $ + bogus o64 call dword near $ + nowd call qword $ + bogus call qword short $ + nowd call qword near $ + bogus o16 call qword $ + bogus o16 call qword short $ + bogus o16 call qword near $ + bogus o32 call qword $ + bogus o32 call qword short $ + bogus o32 call qword near $ + nowd o64 call qword $ + bogus o64 call qword short $ + nowd o64 call qword near $ + call strict $ + bogus call strict short $ + call strict near $ + noq o16 call strict $ + bogus o16 call strict short $ + noq o16 call strict near $ + noq o32 call strict $ + bogus o32 call strict short $ + noq o32 call strict near $ + nowd o64 call strict $ + bogus o64 call strict short $ + nowd o64 call strict near $ + bogus call strict byte $ + bogus call strict byte short $ + bogus call strict byte near $ + bogus o16 call strict byte $ + bogus o16 call strict byte short $ + bogus o16 call strict byte near $ + bogus o32 call strict byte $ + bogus o32 call strict byte short $ + bogus o32 call strict byte near $ + bogus o64 call strict byte $ + bogus o64 call strict byte short $ + bogus o64 call strict byte near $ + noq call strict word $ + bogus call strict word short $ + noq call strict word near $ + noq o16 call strict word $ + bogus o16 call strict word short $ + noq o16 call strict word near $ + bogus o32 call strict word $ + bogus o32 call strict word short $ + bogus o32 call strict word near $ + bogus o64 call strict word $ + bogus o64 call strict word short $ + bogus o64 call strict word near $ + noq call strict dword $ + bogus call strict dword short $ + noq call strict dword near $ + bogus o16 call strict dword $ + bogus o16 call strict dword short $ + bogus o16 call strict dword near $ + noq o32 call strict dword $ + bogus o32 call strict dword short $ + noq o32 call strict dword near $ + bogus o64 call strict dword $ + bogus o64 call strict dword short $ + bogus o64 call strict dword near $ + nowd call strict qword $ + bogus call strict qword short $ + nowd call strict qword near $ + bogus o16 call strict qword $ + bogus o16 call strict qword short $ + bogus o16 call strict qword near $ + bogus o32 call strict qword $ + bogus o32 call strict qword short $ + bogus o32 call strict qword near $ + nowd o64 call strict qword $ + bogus o64 call strict qword short $ + nowd o64 call strict qword near $ + call top + bogus call short top + call near top + noq o16 call top + bogus o16 call short top + noq o16 call near top + noq o32 call top + bogus o32 call short top + noq o32 call near top + nowd o64 call top + bogus o64 call short top + nowd o64 call near top + bogus call byte top + bogus call byte short top + bogus call byte near top + bogus o16 call byte top + bogus o16 call byte short top + bogus o16 call byte near top + bogus o32 call byte top + bogus o32 call byte short top + bogus o32 call byte near top + bogus o64 call byte top + bogus o64 call byte short top + bogus o64 call byte near top + noq call word top + bogus call word short top + noq call word near top + noq o16 call word top + bogus o16 call word short top + noq o16 call word near top + bogus o32 call word top + bogus o32 call word short top + bogus o32 call word near top + bogus o64 call word top + bogus o64 call word short top + bogus o64 call word near top + noq call dword top + bogus call dword short top + noq call dword near top + bogus o16 call dword top + bogus o16 call dword short top + bogus o16 call dword near top + noq o32 call dword top + bogus o32 call dword short top + noq o32 call dword near top + bogus o64 call dword top + bogus o64 call dword short top + bogus o64 call dword near top + nowd call qword top + bogus call qword short top + nowd call qword near top + bogus o16 call qword top + bogus o16 call qword short top + bogus o16 call qword near top + bogus o32 call qword top + bogus o32 call qword short top + bogus o32 call qword near top + nowd o64 call qword top + bogus o64 call qword short top + nowd o64 call qword near top + call strict top + bogus call strict short top + call strict near top + noq o16 call strict top + bogus o16 call strict short top + noq o16 call strict near top + noq o32 call strict top + bogus o32 call strict short top + noq o32 call strict near top + nowd o64 call strict top + bogus o64 call strict short top + nowd o64 call strict near top + bogus call strict byte top + bogus call strict byte short top + bogus call strict byte near top + bogus o16 call strict byte top + bogus o16 call strict byte short top + bogus o16 call strict byte near top + bogus o32 call strict byte top + bogus o32 call strict byte short top + bogus o32 call strict byte near top + bogus o64 call strict byte top + bogus o64 call strict byte short top + bogus o64 call strict byte near top + noq call strict word top + bogus call strict word short top + noq call strict word near top + noq o16 call strict word top + bogus o16 call strict word short top + noq o16 call strict word near top + bogus o32 call strict word top + bogus o32 call strict word short top + bogus o32 call strict word near top + bogus o64 call strict word top + bogus o64 call strict word short top + bogus o64 call strict word near top + noq call strict dword top + bogus call strict dword short top + noq call strict dword near top + bogus o16 call strict dword top + bogus o16 call strict dword short top + bogus o16 call strict dword near top + noq o32 call strict dword top + bogus o32 call strict dword short top + noq o32 call strict dword near top + bogus o64 call strict dword top + bogus o64 call strict dword short top + bogus o64 call strict dword near top + nowd call strict qword top + bogus call strict qword short top + nowd call strict qword near top + bogus o16 call strict qword top + bogus o16 call strict qword short top + bogus o16 call strict qword near top + bogus o32 call strict qword top + bogus o32 call strict qword short top + bogus o32 call strict qword near top + nowd o64 call strict qword top + bogus o64 call strict qword short top + nowd o64 call strict qword near top + call there + bogus call short there + call near there + noq o16 call there + bogus o16 call short there + noq o16 call near there + noq o32 call there + bogus o32 call short there + noq o32 call near there + nowd o64 call there + bogus o64 call short there + nowd o64 call near there + bogus call byte there + bogus call byte short there + bogus call byte near there + bogus o16 call byte there + bogus o16 call byte short there + bogus o16 call byte near there + bogus o32 call byte there + bogus o32 call byte short there + bogus o32 call byte near there + bogus o64 call byte there + bogus o64 call byte short there + bogus o64 call byte near there + noq call word there + bogus call word short there + noq call word near there + noq o16 call word there + bogus o16 call word short there + noq o16 call word near there + bogus o32 call word there + bogus o32 call word short there + bogus o32 call word near there + bogus o64 call word there + bogus o64 call word short there + bogus o64 call word near there + noq call dword there + bogus call dword short there + noq call dword near there + bogus o16 call dword there + bogus o16 call dword short there + bogus o16 call dword near there + noq o32 call dword there + bogus o32 call dword short there + noq o32 call dword near there + bogus o64 call dword there + bogus o64 call dword short there + bogus o64 call dword near there + nowd call qword there + bogus call qword short there + nowd call qword near there + bogus o16 call qword there + bogus o16 call qword short there + bogus o16 call qword near there + bogus o32 call qword there + bogus o32 call qword short there + bogus o32 call qword near there + nowd o64 call qword there + bogus o64 call qword short there + nowd o64 call qword near there + call strict there + bogus call strict short there + call strict near there + noq o16 call strict there + bogus o16 call strict short there + noq o16 call strict near there + noq o32 call strict there + bogus o32 call strict short there + noq o32 call strict near there + nowd o64 call strict there + bogus o64 call strict short there + nowd o64 call strict near there + bogus call strict byte there + bogus call strict byte short there + bogus call strict byte near there + bogus o16 call strict byte there + bogus o16 call strict byte short there + bogus o16 call strict byte near there + bogus o32 call strict byte there + bogus o32 call strict byte short there + bogus o32 call strict byte near there + bogus o64 call strict byte there + bogus o64 call strict byte short there + bogus o64 call strict byte near there + noq call strict word there + bogus call strict word short there + noq call strict word near there + noq o16 call strict word there + bogus o16 call strict word short there + noq o16 call strict word near there + bogus o32 call strict word there + bogus o32 call strict word short there + bogus o32 call strict word near there + bogus o64 call strict word there + bogus o64 call strict word short there + bogus o64 call strict word near there + noq call strict dword there + bogus call strict dword short there + noq call strict dword near there + bogus o16 call strict dword there + bogus o16 call strict dword short there + bogus o16 call strict dword near there + noq o32 call strict dword there + bogus o32 call strict dword short there + noq o32 call strict dword near there + bogus o64 call strict dword there + bogus o64 call strict dword short there + bogus o64 call strict dword near there + nowd call strict qword there + bogus call strict qword short there + nowd call strict qword near there + bogus o16 call strict qword there + bogus o16 call strict qword short there + bogus o16 call strict qword near there + bogus o32 call strict qword there + bogus o32 call strict qword short there + bogus o32 call strict qword near there + nowd o64 call strict qword there + bogus o64 call strict qword short there + nowd o64 call strict qword near there +here_jz: + jz $ + jz short $ + jz near $ + noq o16 jz $ + noq o16 jz short $ + noq o16 jz near $ + noq o32 jz $ + noq o32 jz short $ + noq o32 jz near $ + nowd o64 jz $ + nowd o64 jz short $ + nowd o64 jz near $ + bogus jz byte $ + bogus jz byte short $ + bogus jz byte near $ + bogus o16 jz byte $ + bogus o16 jz byte short $ + bogus o16 jz byte near $ + bogus o32 jz byte $ + bogus o32 jz byte short $ + bogus o32 jz byte near $ + bogus o64 jz byte $ + bogus o64 jz byte short $ + bogus o64 jz byte near $ + noq jz word $ + noq jz word short $ + noq jz word near $ + noq o16 jz word $ + noq o16 jz word short $ + noq o16 jz word near $ + bogus o32 jz word $ + bogus o32 jz word short $ + bogus o32 jz word near $ + bogus o64 jz word $ + bogus o64 jz word short $ + bogus o64 jz word near $ + noq jz dword $ + noq jz dword short $ + noq jz dword near $ + bogus o16 jz dword $ + bogus o16 jz dword short $ + bogus o16 jz dword near $ + noq o32 jz dword $ + noq o32 jz dword short $ + noq o32 jz dword near $ + bogus o64 jz dword $ + bogus o64 jz dword short $ + bogus o64 jz dword near $ + nowd jz qword $ + nowd jz qword short $ + nowd jz qword near $ + bogus o16 jz qword $ + bogus o16 jz qword short $ + bogus o16 jz qword near $ + bogus o32 jz qword $ + bogus o32 jz qword short $ + bogus o32 jz qword near $ + nowd o64 jz qword $ + nowd o64 jz qword short $ + nowd o64 jz qword near $ + jz strict $ + jz strict short $ + jz strict near $ + noq o16 jz strict $ + noq o16 jz strict short $ + noq o16 jz strict near $ + noq o32 jz strict $ + noq o32 jz strict short $ + noq o32 jz strict near $ + nowd o64 jz strict $ + nowd o64 jz strict short $ + nowd o64 jz strict near $ + bogus jz strict byte $ + bogus jz strict byte short $ + bogus jz strict byte near $ + bogus o16 jz strict byte $ + bogus o16 jz strict byte short $ + bogus o16 jz strict byte near $ + bogus o32 jz strict byte $ + bogus o32 jz strict byte short $ + bogus o32 jz strict byte near $ + bogus o64 jz strict byte $ + bogus o64 jz strict byte short $ + bogus o64 jz strict byte near $ + noq jz strict word $ + noq jz strict word short $ + noq jz strict word near $ + noq o16 jz strict word $ + noq o16 jz strict word short $ + noq o16 jz strict word near $ + bogus o32 jz strict word $ + bogus o32 jz strict word short $ + bogus o32 jz strict word near $ + bogus o64 jz strict word $ + bogus o64 jz strict word short $ + bogus o64 jz strict word near $ + noq jz strict dword $ + noq jz strict dword short $ + noq jz strict dword near $ + bogus o16 jz strict dword $ + bogus o16 jz strict dword short $ + bogus o16 jz strict dword near $ + noq o32 jz strict dword $ + noq o32 jz strict dword short $ + noq o32 jz strict dword near $ + bogus o64 jz strict dword $ + bogus o64 jz strict dword short $ + bogus o64 jz strict dword near $ + nowd jz strict qword $ + nowd jz strict qword short $ + nowd jz strict qword near $ + bogus o16 jz strict qword $ + bogus o16 jz strict qword short $ + bogus o16 jz strict qword near $ + bogus o32 jz strict qword $ + bogus o32 jz strict qword short $ + bogus o32 jz strict qword near $ + nowd o64 jz strict qword $ + nowd o64 jz strict qword short $ + nowd o64 jz strict qword near $ + jz top + bogus jz short top + jz near top + noq o16 jz top + bogus o16 jz short top + noq o16 jz near top + noq o32 jz top + bogus o32 jz short top + noq o32 jz near top + nowd o64 jz top + bogus o64 jz short top + nowd o64 jz near top + bogus jz byte top + bogus jz byte short top + bogus jz byte near top + bogus o16 jz byte top + bogus o16 jz byte short top + bogus o16 jz byte near top + bogus o32 jz byte top + bogus o32 jz byte short top + bogus o32 jz byte near top + bogus o64 jz byte top + bogus o64 jz byte short top + bogus o64 jz byte near top + noq jz word top + bogus jz word short top + noq jz word near top + noq o16 jz word top + bogus o16 jz word short top + noq o16 jz word near top + bogus o32 jz word top + bogus o32 jz word short top + bogus o32 jz word near top + bogus o64 jz word top + bogus o64 jz word short top + bogus o64 jz word near top + noq jz dword top + bogus jz dword short top + noq jz dword near top + bogus o16 jz dword top + bogus o16 jz dword short top + bogus o16 jz dword near top + noq o32 jz dword top + bogus o32 jz dword short top + noq o32 jz dword near top + bogus o64 jz dword top + bogus o64 jz dword short top + bogus o64 jz dword near top + nowd jz qword top + bogus jz qword short top + nowd jz qword near top + bogus o16 jz qword top + bogus o16 jz qword short top + bogus o16 jz qword near top + bogus o32 jz qword top + bogus o32 jz qword short top + bogus o32 jz qword near top + nowd o64 jz qword top + bogus o64 jz qword short top + nowd o64 jz qword near top + jz strict top + bogus jz strict short top + jz strict near top + noq o16 jz strict top + bogus o16 jz strict short top + noq o16 jz strict near top + noq o32 jz strict top + bogus o32 jz strict short top + noq o32 jz strict near top + nowd o64 jz strict top + bogus o64 jz strict short top + nowd o64 jz strict near top + bogus jz strict byte top + bogus jz strict byte short top + bogus jz strict byte near top + bogus o16 jz strict byte top + bogus o16 jz strict byte short top + bogus o16 jz strict byte near top + bogus o32 jz strict byte top + bogus o32 jz strict byte short top + bogus o32 jz strict byte near top + bogus o64 jz strict byte top + bogus o64 jz strict byte short top + bogus o64 jz strict byte near top + noq jz strict word top + bogus jz strict word short top + noq jz strict word near top + noq o16 jz strict word top + bogus o16 jz strict word short top + noq o16 jz strict word near top + bogus o32 jz strict word top + bogus o32 jz strict word short top + bogus o32 jz strict word near top + bogus o64 jz strict word top + bogus o64 jz strict word short top + bogus o64 jz strict word near top + noq jz strict dword top + bogus jz strict dword short top + noq jz strict dword near top + bogus o16 jz strict dword top + bogus o16 jz strict dword short top + bogus o16 jz strict dword near top + noq o32 jz strict dword top + bogus o32 jz strict dword short top + noq o32 jz strict dword near top + bogus o64 jz strict dword top + bogus o64 jz strict dword short top + bogus o64 jz strict dword near top + nowd jz strict qword top + bogus jz strict qword short top + nowd jz strict qword near top + bogus o16 jz strict qword top + bogus o16 jz strict qword short top + bogus o16 jz strict qword near top + bogus o32 jz strict qword top + bogus o32 jz strict qword short top + bogus o32 jz strict qword near top + nowd o64 jz strict qword top + bogus o64 jz strict qword short top + nowd o64 jz strict qword near top + jz there + bogus jz short there + jz near there + noq o16 jz there + bogus o16 jz short there + noq o16 jz near there + noq o32 jz there + bogus o32 jz short there + noq o32 jz near there + nowd o64 jz there + bogus o64 jz short there + nowd o64 jz near there + bogus jz byte there + bogus jz byte short there + bogus jz byte near there + bogus o16 jz byte there + bogus o16 jz byte short there + bogus o16 jz byte near there + bogus o32 jz byte there + bogus o32 jz byte short there + bogus o32 jz byte near there + bogus o64 jz byte there + bogus o64 jz byte short there + bogus o64 jz byte near there + noq jz word there + bogus jz word short there + noq jz word near there + noq o16 jz word there + bogus o16 jz word short there + noq o16 jz word near there + bogus o32 jz word there + bogus o32 jz word short there + bogus o32 jz word near there + bogus o64 jz word there + bogus o64 jz word short there + bogus o64 jz word near there + noq jz dword there + bogus jz dword short there + noq jz dword near there + bogus o16 jz dword there + bogus o16 jz dword short there + bogus o16 jz dword near there + noq o32 jz dword there + bogus o32 jz dword short there + noq o32 jz dword near there + bogus o64 jz dword there + bogus o64 jz dword short there + bogus o64 jz dword near there + nowd jz qword there + bogus jz qword short there + nowd jz qword near there + bogus o16 jz qword there + bogus o16 jz qword short there + bogus o16 jz qword near there + bogus o32 jz qword there + bogus o32 jz qword short there + bogus o32 jz qword near there + nowd o64 jz qword there + bogus o64 jz qword short there + nowd o64 jz qword near there + jz strict there + bogus jz strict short there + jz strict near there + noq o16 jz strict there + bogus o16 jz strict short there + noq o16 jz strict near there + noq o32 jz strict there + bogus o32 jz strict short there + noq o32 jz strict near there + nowd o64 jz strict there + bogus o64 jz strict short there + nowd o64 jz strict near there + bogus jz strict byte there + bogus jz strict byte short there + bogus jz strict byte near there + bogus o16 jz strict byte there + bogus o16 jz strict byte short there + bogus o16 jz strict byte near there + bogus o32 jz strict byte there + bogus o32 jz strict byte short there + bogus o32 jz strict byte near there + bogus o64 jz strict byte there + bogus o64 jz strict byte short there + bogus o64 jz strict byte near there + noq jz strict word there + bogus jz strict word short there + noq jz strict word near there + noq o16 jz strict word there + bogus o16 jz strict word short there + noq o16 jz strict word near there + bogus o32 jz strict word there + bogus o32 jz strict word short there + bogus o32 jz strict word near there + bogus o64 jz strict word there + bogus o64 jz strict word short there + bogus o64 jz strict word near there + noq jz strict dword there + bogus jz strict dword short there + noq jz strict dword near there + bogus o16 jz strict dword there + bogus o16 jz strict dword short there + bogus o16 jz strict dword near there + noq o32 jz strict dword there + bogus o32 jz strict dword short there + noq o32 jz strict dword near there + bogus o64 jz strict dword there + bogus o64 jz strict dword short there + bogus o64 jz strict dword near there + nowd jz strict qword there + bogus jz strict qword short there + nowd jz strict qword near there + bogus o16 jz strict qword there + bogus o16 jz strict qword short there + bogus o16 jz strict qword near there + bogus o32 jz strict qword there + bogus o32 jz strict qword short there + bogus o32 jz strict qword near there + nowd o64 jz strict qword there + bogus o64 jz strict qword short there + nowd o64 jz strict qword near there +here_jcxz: + noq jcxz $ + noq jcxz short $ + bogus jcxz near $ + noq o16 jcxz $ + noq o16 jcxz short $ + bogus o16 jcxz near $ + noq o32 jcxz $ + noq o32 jcxz short $ + bogus o32 jcxz near $ + bogus o64 jcxz $ + bogus o64 jcxz short $ + bogus o64 jcxz near $ + bogus jcxz byte $ + bogus jcxz byte short $ + bogus jcxz byte near $ + bogus o16 jcxz byte $ + bogus o16 jcxz byte short $ + bogus o16 jcxz byte near $ + bogus o32 jcxz byte $ + bogus o32 jcxz byte short $ + bogus o32 jcxz byte near $ + bogus o64 jcxz byte $ + bogus o64 jcxz byte short $ + bogus o64 jcxz byte near $ + noq jcxz word $ + noq jcxz word short $ + bogus jcxz word near $ + noq o16 jcxz word $ + noq o16 jcxz word short $ + bogus o16 jcxz word near $ + bogus o32 jcxz word $ + bogus o32 jcxz word short $ + bogus o32 jcxz word near $ + bogus o64 jcxz word $ + bogus o64 jcxz word short $ + bogus o64 jcxz word near $ + noq jcxz dword $ + noq jcxz dword short $ + bogus jcxz dword near $ + bogus o16 jcxz dword $ + bogus o16 jcxz dword short $ + bogus o16 jcxz dword near $ + noq o32 jcxz dword $ + noq o32 jcxz dword short $ + bogus o32 jcxz dword near $ + bogus o64 jcxz dword $ + bogus o64 jcxz dword short $ + bogus o64 jcxz dword near $ + bogus jcxz qword $ + bogus jcxz qword short $ + bogus jcxz qword near $ + bogus o16 jcxz qword $ + bogus o16 jcxz qword short $ + bogus o16 jcxz qword near $ + bogus o32 jcxz qword $ + bogus o32 jcxz qword short $ + bogus o32 jcxz qword near $ + bogus o64 jcxz qword $ + bogus o64 jcxz qword short $ + bogus o64 jcxz qword near $ + noq jcxz strict $ + noq jcxz strict short $ + bogus jcxz strict near $ + noq o16 jcxz strict $ + noq o16 jcxz strict short $ + bogus o16 jcxz strict near $ + noq o32 jcxz strict $ + noq o32 jcxz strict short $ + bogus o32 jcxz strict near $ + bogus o64 jcxz strict $ + bogus o64 jcxz strict short $ + bogus o64 jcxz strict near $ + bogus jcxz strict byte $ + bogus jcxz strict byte short $ + bogus jcxz strict byte near $ + bogus o16 jcxz strict byte $ + bogus o16 jcxz strict byte short $ + bogus o16 jcxz strict byte near $ + bogus o32 jcxz strict byte $ + bogus o32 jcxz strict byte short $ + bogus o32 jcxz strict byte near $ + bogus o64 jcxz strict byte $ + bogus o64 jcxz strict byte short $ + bogus o64 jcxz strict byte near $ + noq jcxz strict word $ + noq jcxz strict word short $ + bogus jcxz strict word near $ + noq o16 jcxz strict word $ + noq o16 jcxz strict word short $ + bogus o16 jcxz strict word near $ + bogus o32 jcxz strict word $ + bogus o32 jcxz strict word short $ + bogus o32 jcxz strict word near $ + bogus o64 jcxz strict word $ + bogus o64 jcxz strict word short $ + bogus o64 jcxz strict word near $ + noq jcxz strict dword $ + noq jcxz strict dword short $ + bogus jcxz strict dword near $ + bogus o16 jcxz strict dword $ + bogus o16 jcxz strict dword short $ + bogus o16 jcxz strict dword near $ + noq o32 jcxz strict dword $ + noq o32 jcxz strict dword short $ + bogus o32 jcxz strict dword near $ + bogus o64 jcxz strict dword $ + bogus o64 jcxz strict dword short $ + bogus o64 jcxz strict dword near $ + bogus jcxz strict qword $ + bogus jcxz strict qword short $ + bogus jcxz strict qword near $ + bogus o16 jcxz strict qword $ + bogus o16 jcxz strict qword short $ + bogus o16 jcxz strict qword near $ + bogus o32 jcxz strict qword $ + bogus o32 jcxz strict qword short $ + bogus o32 jcxz strict qword near $ + bogus o64 jcxz strict qword $ + bogus o64 jcxz strict qword short $ + bogus o64 jcxz strict qword near $ + bogus jcxz top + bogus jcxz short top + bogus jcxz near top + bogus o16 jcxz top + bogus o16 jcxz short top + bogus o16 jcxz near top + bogus o32 jcxz top + bogus o32 jcxz short top + bogus o32 jcxz near top + bogus o64 jcxz top + bogus o64 jcxz short top + bogus o64 jcxz near top + bogus jcxz byte top + bogus jcxz byte short top + bogus jcxz byte near top + bogus o16 jcxz byte top + bogus o16 jcxz byte short top + bogus o16 jcxz byte near top + bogus o32 jcxz byte top + bogus o32 jcxz byte short top + bogus o32 jcxz byte near top + bogus o64 jcxz byte top + bogus o64 jcxz byte short top + bogus o64 jcxz byte near top + bogus jcxz word top + bogus jcxz word short top + bogus jcxz word near top + bogus o16 jcxz word top + bogus o16 jcxz word short top + bogus o16 jcxz word near top + bogus o32 jcxz word top + bogus o32 jcxz word short top + bogus o32 jcxz word near top + bogus o64 jcxz word top + bogus o64 jcxz word short top + bogus o64 jcxz word near top + bogus jcxz dword top + bogus jcxz dword short top + bogus jcxz dword near top + bogus o16 jcxz dword top + bogus o16 jcxz dword short top + bogus o16 jcxz dword near top + bogus o32 jcxz dword top + bogus o32 jcxz dword short top + bogus o32 jcxz dword near top + bogus o64 jcxz dword top + bogus o64 jcxz dword short top + bogus o64 jcxz dword near top + bogus jcxz qword top + bogus jcxz qword short top + bogus jcxz qword near top + bogus o16 jcxz qword top + bogus o16 jcxz qword short top + bogus o16 jcxz qword near top + bogus o32 jcxz qword top + bogus o32 jcxz qword short top + bogus o32 jcxz qword near top + bogus o64 jcxz qword top + bogus o64 jcxz qword short top + bogus o64 jcxz qword near top + bogus jcxz strict top + bogus jcxz strict short top + bogus jcxz strict near top + bogus o16 jcxz strict top + bogus o16 jcxz strict short top + bogus o16 jcxz strict near top + bogus o32 jcxz strict top + bogus o32 jcxz strict short top + bogus o32 jcxz strict near top + bogus o64 jcxz strict top + bogus o64 jcxz strict short top + bogus o64 jcxz strict near top + bogus jcxz strict byte top + bogus jcxz strict byte short top + bogus jcxz strict byte near top + bogus o16 jcxz strict byte top + bogus o16 jcxz strict byte short top + bogus o16 jcxz strict byte near top + bogus o32 jcxz strict byte top + bogus o32 jcxz strict byte short top + bogus o32 jcxz strict byte near top + bogus o64 jcxz strict byte top + bogus o64 jcxz strict byte short top + bogus o64 jcxz strict byte near top + bogus jcxz strict word top + bogus jcxz strict word short top + bogus jcxz strict word near top + bogus o16 jcxz strict word top + bogus o16 jcxz strict word short top + bogus o16 jcxz strict word near top + bogus o32 jcxz strict word top + bogus o32 jcxz strict word short top + bogus o32 jcxz strict word near top + bogus o64 jcxz strict word top + bogus o64 jcxz strict word short top + bogus o64 jcxz strict word near top + bogus jcxz strict dword top + bogus jcxz strict dword short top + bogus jcxz strict dword near top + bogus o16 jcxz strict dword top + bogus o16 jcxz strict dword short top + bogus o16 jcxz strict dword near top + bogus o32 jcxz strict dword top + bogus o32 jcxz strict dword short top + bogus o32 jcxz strict dword near top + bogus o64 jcxz strict dword top + bogus o64 jcxz strict dword short top + bogus o64 jcxz strict dword near top + bogus jcxz strict qword top + bogus jcxz strict qword short top + bogus jcxz strict qword near top + bogus o16 jcxz strict qword top + bogus o16 jcxz strict qword short top + bogus o16 jcxz strict qword near top + bogus o32 jcxz strict qword top + bogus o32 jcxz strict qword short top + bogus o32 jcxz strict qword near top + bogus o64 jcxz strict qword top + bogus o64 jcxz strict qword short top + bogus o64 jcxz strict qword near top + bogus jcxz there + bogus jcxz short there + bogus jcxz near there + bogus o16 jcxz there + bogus o16 jcxz short there + bogus o16 jcxz near there + bogus o32 jcxz there + bogus o32 jcxz short there + bogus o32 jcxz near there + bogus o64 jcxz there + bogus o64 jcxz short there + bogus o64 jcxz near there + bogus jcxz byte there + bogus jcxz byte short there + bogus jcxz byte near there + bogus o16 jcxz byte there + bogus o16 jcxz byte short there + bogus o16 jcxz byte near there + bogus o32 jcxz byte there + bogus o32 jcxz byte short there + bogus o32 jcxz byte near there + bogus o64 jcxz byte there + bogus o64 jcxz byte short there + bogus o64 jcxz byte near there + bogus jcxz word there + bogus jcxz word short there + bogus jcxz word near there + bogus o16 jcxz word there + bogus o16 jcxz word short there + bogus o16 jcxz word near there + bogus o32 jcxz word there + bogus o32 jcxz word short there + bogus o32 jcxz word near there + bogus o64 jcxz word there + bogus o64 jcxz word short there + bogus o64 jcxz word near there + bogus jcxz dword there + bogus jcxz dword short there + bogus jcxz dword near there + bogus o16 jcxz dword there + bogus o16 jcxz dword short there + bogus o16 jcxz dword near there + bogus o32 jcxz dword there + bogus o32 jcxz dword short there + bogus o32 jcxz dword near there + bogus o64 jcxz dword there + bogus o64 jcxz dword short there + bogus o64 jcxz dword near there + bogus jcxz qword there + bogus jcxz qword short there + bogus jcxz qword near there + bogus o16 jcxz qword there + bogus o16 jcxz qword short there + bogus o16 jcxz qword near there + bogus o32 jcxz qword there + bogus o32 jcxz qword short there + bogus o32 jcxz qword near there + bogus o64 jcxz qword there + bogus o64 jcxz qword short there + bogus o64 jcxz qword near there + bogus jcxz strict there + bogus jcxz strict short there + bogus jcxz strict near there + bogus o16 jcxz strict there + bogus o16 jcxz strict short there + bogus o16 jcxz strict near there + bogus o32 jcxz strict there + bogus o32 jcxz strict short there + bogus o32 jcxz strict near there + bogus o64 jcxz strict there + bogus o64 jcxz strict short there + bogus o64 jcxz strict near there + bogus jcxz strict byte there + bogus jcxz strict byte short there + bogus jcxz strict byte near there + bogus o16 jcxz strict byte there + bogus o16 jcxz strict byte short there + bogus o16 jcxz strict byte near there + bogus o32 jcxz strict byte there + bogus o32 jcxz strict byte short there + bogus o32 jcxz strict byte near there + bogus o64 jcxz strict byte there + bogus o64 jcxz strict byte short there + bogus o64 jcxz strict byte near there + bogus jcxz strict word there + bogus jcxz strict word short there + bogus jcxz strict word near there + bogus o16 jcxz strict word there + bogus o16 jcxz strict word short there + bogus o16 jcxz strict word near there + bogus o32 jcxz strict word there + bogus o32 jcxz strict word short there + bogus o32 jcxz strict word near there + bogus o64 jcxz strict word there + bogus o64 jcxz strict word short there + bogus o64 jcxz strict word near there + bogus jcxz strict dword there + bogus jcxz strict dword short there + bogus jcxz strict dword near there + bogus o16 jcxz strict dword there + bogus o16 jcxz strict dword short there + bogus o16 jcxz strict dword near there + bogus o32 jcxz strict dword there + bogus o32 jcxz strict dword short there + bogus o32 jcxz strict dword near there + bogus o64 jcxz strict dword there + bogus o64 jcxz strict dword short there + bogus o64 jcxz strict dword near there + bogus jcxz strict qword there + bogus jcxz strict qword short there + bogus jcxz strict qword near there + bogus o16 jcxz strict qword there + bogus o16 jcxz strict qword short there + bogus o16 jcxz strict qword near there + bogus o32 jcxz strict qword there + bogus o32 jcxz strict qword short there + bogus o32 jcxz strict qword near there + bogus o64 jcxz strict qword there + bogus o64 jcxz strict qword short there + bogus o64 jcxz strict qword near there +here_jecxz: + jecxz $ + jecxz short $ + bogus jecxz near $ + noq o16 jecxz $ + noq o16 jecxz short $ + bogus o16 jecxz near $ + noq o32 jecxz $ + noq o32 jecxz short $ + bogus o32 jecxz near $ + nowd o64 jecxz $ + nowd o64 jecxz short $ + bogus o64 jecxz near $ + bogus jecxz byte $ + bogus jecxz byte short $ + bogus jecxz byte near $ + bogus o16 jecxz byte $ + bogus o16 jecxz byte short $ + bogus o16 jecxz byte near $ + bogus o32 jecxz byte $ + bogus o32 jecxz byte short $ + bogus o32 jecxz byte near $ + bogus o64 jecxz byte $ + bogus o64 jecxz byte short $ + bogus o64 jecxz byte near $ + noq jecxz word $ + noq jecxz word short $ + bogus jecxz word near $ + noq o16 jecxz word $ + noq o16 jecxz word short $ + bogus o16 jecxz word near $ + bogus o32 jecxz word $ + bogus o32 jecxz word short $ + bogus o32 jecxz word near $ + bogus o64 jecxz word $ + bogus o64 jecxz word short $ + bogus o64 jecxz word near $ + noq jecxz dword $ + noq jecxz dword short $ + bogus jecxz dword near $ + bogus o16 jecxz dword $ + bogus o16 jecxz dword short $ + bogus o16 jecxz dword near $ + noq o32 jecxz dword $ + noq o32 jecxz dword short $ + bogus o32 jecxz dword near $ + bogus o64 jecxz dword $ + bogus o64 jecxz dword short $ + bogus o64 jecxz dword near $ + nowd jecxz qword $ + nowd jecxz qword short $ + bogus jecxz qword near $ + bogus o16 jecxz qword $ + bogus o16 jecxz qword short $ + bogus o16 jecxz qword near $ + bogus o32 jecxz qword $ + bogus o32 jecxz qword short $ + bogus o32 jecxz qword near $ + nowd o64 jecxz qword $ + nowd o64 jecxz qword short $ + bogus o64 jecxz qword near $ + jecxz strict $ + jecxz strict short $ + bogus jecxz strict near $ + noq o16 jecxz strict $ + noq o16 jecxz strict short $ + bogus o16 jecxz strict near $ + noq o32 jecxz strict $ + noq o32 jecxz strict short $ + bogus o32 jecxz strict near $ + nowd o64 jecxz strict $ + nowd o64 jecxz strict short $ + bogus o64 jecxz strict near $ + bogus jecxz strict byte $ + bogus jecxz strict byte short $ + bogus jecxz strict byte near $ + bogus o16 jecxz strict byte $ + bogus o16 jecxz strict byte short $ + bogus o16 jecxz strict byte near $ + bogus o32 jecxz strict byte $ + bogus o32 jecxz strict byte short $ + bogus o32 jecxz strict byte near $ + bogus o64 jecxz strict byte $ + bogus o64 jecxz strict byte short $ + bogus o64 jecxz strict byte near $ + noq jecxz strict word $ + noq jecxz strict word short $ + bogus jecxz strict word near $ + noq o16 jecxz strict word $ + noq o16 jecxz strict word short $ + bogus o16 jecxz strict word near $ + bogus o32 jecxz strict word $ + bogus o32 jecxz strict word short $ + bogus o32 jecxz strict word near $ + bogus o64 jecxz strict word $ + bogus o64 jecxz strict word short $ + bogus o64 jecxz strict word near $ + noq jecxz strict dword $ + noq jecxz strict dword short $ + bogus jecxz strict dword near $ + bogus o16 jecxz strict dword $ + bogus o16 jecxz strict dword short $ + bogus o16 jecxz strict dword near $ + noq o32 jecxz strict dword $ + noq o32 jecxz strict dword short $ + bogus o32 jecxz strict dword near $ + bogus o64 jecxz strict dword $ + bogus o64 jecxz strict dword short $ + bogus o64 jecxz strict dword near $ + nowd jecxz strict qword $ + nowd jecxz strict qword short $ + bogus jecxz strict qword near $ + bogus o16 jecxz strict qword $ + bogus o16 jecxz strict qword short $ + bogus o16 jecxz strict qword near $ + bogus o32 jecxz strict qword $ + bogus o32 jecxz strict qword short $ + bogus o32 jecxz strict qword near $ + nowd o64 jecxz strict qword $ + nowd o64 jecxz strict qword short $ + bogus o64 jecxz strict qword near $ + bogus jecxz top + bogus jecxz short top + bogus jecxz near top + bogus o16 jecxz top + bogus o16 jecxz short top + bogus o16 jecxz near top + bogus o32 jecxz top + bogus o32 jecxz short top + bogus o32 jecxz near top + bogus o64 jecxz top + bogus o64 jecxz short top + bogus o64 jecxz near top + bogus jecxz byte top + bogus jecxz byte short top + bogus jecxz byte near top + bogus o16 jecxz byte top + bogus o16 jecxz byte short top + bogus o16 jecxz byte near top + bogus o32 jecxz byte top + bogus o32 jecxz byte short top + bogus o32 jecxz byte near top + bogus o64 jecxz byte top + bogus o64 jecxz byte short top + bogus o64 jecxz byte near top + bogus jecxz word top + bogus jecxz word short top + bogus jecxz word near top + bogus o16 jecxz word top + bogus o16 jecxz word short top + bogus o16 jecxz word near top + bogus o32 jecxz word top + bogus o32 jecxz word short top + bogus o32 jecxz word near top + bogus o64 jecxz word top + bogus o64 jecxz word short top + bogus o64 jecxz word near top + bogus jecxz dword top + bogus jecxz dword short top + bogus jecxz dword near top + bogus o16 jecxz dword top + bogus o16 jecxz dword short top + bogus o16 jecxz dword near top + bogus o32 jecxz dword top + bogus o32 jecxz dword short top + bogus o32 jecxz dword near top + bogus o64 jecxz dword top + bogus o64 jecxz dword short top + bogus o64 jecxz dword near top + bogus jecxz qword top + bogus jecxz qword short top + bogus jecxz qword near top + bogus o16 jecxz qword top + bogus o16 jecxz qword short top + bogus o16 jecxz qword near top + bogus o32 jecxz qword top + bogus o32 jecxz qword short top + bogus o32 jecxz qword near top + bogus o64 jecxz qword top + bogus o64 jecxz qword short top + bogus o64 jecxz qword near top + bogus jecxz strict top + bogus jecxz strict short top + bogus jecxz strict near top + bogus o16 jecxz strict top + bogus o16 jecxz strict short top + bogus o16 jecxz strict near top + bogus o32 jecxz strict top + bogus o32 jecxz strict short top + bogus o32 jecxz strict near top + bogus o64 jecxz strict top + bogus o64 jecxz strict short top + bogus o64 jecxz strict near top + bogus jecxz strict byte top + bogus jecxz strict byte short top + bogus jecxz strict byte near top + bogus o16 jecxz strict byte top + bogus o16 jecxz strict byte short top + bogus o16 jecxz strict byte near top + bogus o32 jecxz strict byte top + bogus o32 jecxz strict byte short top + bogus o32 jecxz strict byte near top + bogus o64 jecxz strict byte top + bogus o64 jecxz strict byte short top + bogus o64 jecxz strict byte near top + bogus jecxz strict word top + bogus jecxz strict word short top + bogus jecxz strict word near top + bogus o16 jecxz strict word top + bogus o16 jecxz strict word short top + bogus o16 jecxz strict word near top + bogus o32 jecxz strict word top + bogus o32 jecxz strict word short top + bogus o32 jecxz strict word near top + bogus o64 jecxz strict word top + bogus o64 jecxz strict word short top + bogus o64 jecxz strict word near top + bogus jecxz strict dword top + bogus jecxz strict dword short top + bogus jecxz strict dword near top + bogus o16 jecxz strict dword top + bogus o16 jecxz strict dword short top + bogus o16 jecxz strict dword near top + bogus o32 jecxz strict dword top + bogus o32 jecxz strict dword short top + bogus o32 jecxz strict dword near top + bogus o64 jecxz strict dword top + bogus o64 jecxz strict dword short top + bogus o64 jecxz strict dword near top + bogus jecxz strict qword top + bogus jecxz strict qword short top + bogus jecxz strict qword near top + bogus o16 jecxz strict qword top + bogus o16 jecxz strict qword short top + bogus o16 jecxz strict qword near top + bogus o32 jecxz strict qword top + bogus o32 jecxz strict qword short top + bogus o32 jecxz strict qword near top + bogus o64 jecxz strict qword top + bogus o64 jecxz strict qword short top + bogus o64 jecxz strict qword near top + bogus jecxz there + bogus jecxz short there + bogus jecxz near there + bogus o16 jecxz there + bogus o16 jecxz short there + bogus o16 jecxz near there + bogus o32 jecxz there + bogus o32 jecxz short there + bogus o32 jecxz near there + bogus o64 jecxz there + bogus o64 jecxz short there + bogus o64 jecxz near there + bogus jecxz byte there + bogus jecxz byte short there + bogus jecxz byte near there + bogus o16 jecxz byte there + bogus o16 jecxz byte short there + bogus o16 jecxz byte near there + bogus o32 jecxz byte there + bogus o32 jecxz byte short there + bogus o32 jecxz byte near there + bogus o64 jecxz byte there + bogus o64 jecxz byte short there + bogus o64 jecxz byte near there + bogus jecxz word there + bogus jecxz word short there + bogus jecxz word near there + bogus o16 jecxz word there + bogus o16 jecxz word short there + bogus o16 jecxz word near there + bogus o32 jecxz word there + bogus o32 jecxz word short there + bogus o32 jecxz word near there + bogus o64 jecxz word there + bogus o64 jecxz word short there + bogus o64 jecxz word near there + bogus jecxz dword there + bogus jecxz dword short there + bogus jecxz dword near there + bogus o16 jecxz dword there + bogus o16 jecxz dword short there + bogus o16 jecxz dword near there + bogus o32 jecxz dword there + bogus o32 jecxz dword short there + bogus o32 jecxz dword near there + bogus o64 jecxz dword there + bogus o64 jecxz dword short there + bogus o64 jecxz dword near there + bogus jecxz qword there + bogus jecxz qword short there + bogus jecxz qword near there + bogus o16 jecxz qword there + bogus o16 jecxz qword short there + bogus o16 jecxz qword near there + bogus o32 jecxz qword there + bogus o32 jecxz qword short there + bogus o32 jecxz qword near there + bogus o64 jecxz qword there + bogus o64 jecxz qword short there + bogus o64 jecxz qword near there + bogus jecxz strict there + bogus jecxz strict short there + bogus jecxz strict near there + bogus o16 jecxz strict there + bogus o16 jecxz strict short there + bogus o16 jecxz strict near there + bogus o32 jecxz strict there + bogus o32 jecxz strict short there + bogus o32 jecxz strict near there + bogus o64 jecxz strict there + bogus o64 jecxz strict short there + bogus o64 jecxz strict near there + bogus jecxz strict byte there + bogus jecxz strict byte short there + bogus jecxz strict byte near there + bogus o16 jecxz strict byte there + bogus o16 jecxz strict byte short there + bogus o16 jecxz strict byte near there + bogus o32 jecxz strict byte there + bogus o32 jecxz strict byte short there + bogus o32 jecxz strict byte near there + bogus o64 jecxz strict byte there + bogus o64 jecxz strict byte short there + bogus o64 jecxz strict byte near there + bogus jecxz strict word there + bogus jecxz strict word short there + bogus jecxz strict word near there + bogus o16 jecxz strict word there + bogus o16 jecxz strict word short there + bogus o16 jecxz strict word near there + bogus o32 jecxz strict word there + bogus o32 jecxz strict word short there + bogus o32 jecxz strict word near there + bogus o64 jecxz strict word there + bogus o64 jecxz strict word short there + bogus o64 jecxz strict word near there + bogus jecxz strict dword there + bogus jecxz strict dword short there + bogus jecxz strict dword near there + bogus o16 jecxz strict dword there + bogus o16 jecxz strict dword short there + bogus o16 jecxz strict dword near there + bogus o32 jecxz strict dword there + bogus o32 jecxz strict dword short there + bogus o32 jecxz strict dword near there + bogus o64 jecxz strict dword there + bogus o64 jecxz strict dword short there + bogus o64 jecxz strict dword near there + bogus jecxz strict qword there + bogus jecxz strict qword short there + bogus jecxz strict qword near there + bogus o16 jecxz strict qword there + bogus o16 jecxz strict qword short there + bogus o16 jecxz strict qword near there + bogus o32 jecxz strict qword there + bogus o32 jecxz strict qword short there + bogus o32 jecxz strict qword near there + bogus o64 jecxz strict qword there + bogus o64 jecxz strict qword short there + bogus o64 jecxz strict qword near there +here_jrcxz: + nowd jrcxz $ + nowd jrcxz short $ + bogus jrcxz near $ + bogus o16 jrcxz $ + bogus o16 jrcxz short $ + bogus o16 jrcxz near $ + bogus o32 jrcxz $ + bogus o32 jrcxz short $ + bogus o32 jrcxz near $ + nowd o64 jrcxz $ + nowd o64 jrcxz short $ + bogus o64 jrcxz near $ + bogus jrcxz byte $ + bogus jrcxz byte short $ + bogus jrcxz byte near $ + bogus o16 jrcxz byte $ + bogus o16 jrcxz byte short $ + bogus o16 jrcxz byte near $ + bogus o32 jrcxz byte $ + bogus o32 jrcxz byte short $ + bogus o32 jrcxz byte near $ + bogus o64 jrcxz byte $ + bogus o64 jrcxz byte short $ + bogus o64 jrcxz byte near $ + bogus jrcxz word $ + bogus jrcxz word short $ + bogus jrcxz word near $ + bogus o16 jrcxz word $ + bogus o16 jrcxz word short $ + bogus o16 jrcxz word near $ + bogus o32 jrcxz word $ + bogus o32 jrcxz word short $ + bogus o32 jrcxz word near $ + bogus o64 jrcxz word $ + bogus o64 jrcxz word short $ + bogus o64 jrcxz word near $ + bogus jrcxz dword $ + bogus jrcxz dword short $ + bogus jrcxz dword near $ + bogus o16 jrcxz dword $ + bogus o16 jrcxz dword short $ + bogus o16 jrcxz dword near $ + bogus o32 jrcxz dword $ + bogus o32 jrcxz dword short $ + bogus o32 jrcxz dword near $ + bogus o64 jrcxz dword $ + bogus o64 jrcxz dword short $ + bogus o64 jrcxz dword near $ + nowd jrcxz qword $ + nowd jrcxz qword short $ + bogus jrcxz qword near $ + bogus o16 jrcxz qword $ + bogus o16 jrcxz qword short $ + bogus o16 jrcxz qword near $ + bogus o32 jrcxz qword $ + bogus o32 jrcxz qword short $ + bogus o32 jrcxz qword near $ + nowd o64 jrcxz qword $ + nowd o64 jrcxz qword short $ + bogus o64 jrcxz qword near $ + nowd jrcxz strict $ + nowd jrcxz strict short $ + bogus jrcxz strict near $ + bogus o16 jrcxz strict $ + bogus o16 jrcxz strict short $ + bogus o16 jrcxz strict near $ + bogus o32 jrcxz strict $ + bogus o32 jrcxz strict short $ + bogus o32 jrcxz strict near $ + nowd o64 jrcxz strict $ + nowd o64 jrcxz strict short $ + bogus o64 jrcxz strict near $ + bogus jrcxz strict byte $ + bogus jrcxz strict byte short $ + bogus jrcxz strict byte near $ + bogus o16 jrcxz strict byte $ + bogus o16 jrcxz strict byte short $ + bogus o16 jrcxz strict byte near $ + bogus o32 jrcxz strict byte $ + bogus o32 jrcxz strict byte short $ + bogus o32 jrcxz strict byte near $ + bogus o64 jrcxz strict byte $ + bogus o64 jrcxz strict byte short $ + bogus o64 jrcxz strict byte near $ + bogus jrcxz strict word $ + bogus jrcxz strict word short $ + bogus jrcxz strict word near $ + bogus o16 jrcxz strict word $ + bogus o16 jrcxz strict word short $ + bogus o16 jrcxz strict word near $ + bogus o32 jrcxz strict word $ + bogus o32 jrcxz strict word short $ + bogus o32 jrcxz strict word near $ + bogus o64 jrcxz strict word $ + bogus o64 jrcxz strict word short $ + bogus o64 jrcxz strict word near $ + bogus jrcxz strict dword $ + bogus jrcxz strict dword short $ + bogus jrcxz strict dword near $ + bogus o16 jrcxz strict dword $ + bogus o16 jrcxz strict dword short $ + bogus o16 jrcxz strict dword near $ + bogus o32 jrcxz strict dword $ + bogus o32 jrcxz strict dword short $ + bogus o32 jrcxz strict dword near $ + bogus o64 jrcxz strict dword $ + bogus o64 jrcxz strict dword short $ + bogus o64 jrcxz strict dword near $ + nowd jrcxz strict qword $ + nowd jrcxz strict qword short $ + bogus jrcxz strict qword near $ + bogus o16 jrcxz strict qword $ + bogus o16 jrcxz strict qword short $ + bogus o16 jrcxz strict qword near $ + bogus o32 jrcxz strict qword $ + bogus o32 jrcxz strict qword short $ + bogus o32 jrcxz strict qword near $ + nowd o64 jrcxz strict qword $ + nowd o64 jrcxz strict qword short $ + bogus o64 jrcxz strict qword near $ + bogus jrcxz top + bogus jrcxz short top + bogus jrcxz near top + bogus o16 jrcxz top + bogus o16 jrcxz short top + bogus o16 jrcxz near top + bogus o32 jrcxz top + bogus o32 jrcxz short top + bogus o32 jrcxz near top + bogus o64 jrcxz top + bogus o64 jrcxz short top + bogus o64 jrcxz near top + bogus jrcxz byte top + bogus jrcxz byte short top + bogus jrcxz byte near top + bogus o16 jrcxz byte top + bogus o16 jrcxz byte short top + bogus o16 jrcxz byte near top + bogus o32 jrcxz byte top + bogus o32 jrcxz byte short top + bogus o32 jrcxz byte near top + bogus o64 jrcxz byte top + bogus o64 jrcxz byte short top + bogus o64 jrcxz byte near top + bogus jrcxz word top + bogus jrcxz word short top + bogus jrcxz word near top + bogus o16 jrcxz word top + bogus o16 jrcxz word short top + bogus o16 jrcxz word near top + bogus o32 jrcxz word top + bogus o32 jrcxz word short top + bogus o32 jrcxz word near top + bogus o64 jrcxz word top + bogus o64 jrcxz word short top + bogus o64 jrcxz word near top + bogus jrcxz dword top + bogus jrcxz dword short top + bogus jrcxz dword near top + bogus o16 jrcxz dword top + bogus o16 jrcxz dword short top + bogus o16 jrcxz dword near top + bogus o32 jrcxz dword top + bogus o32 jrcxz dword short top + bogus o32 jrcxz dword near top + bogus o64 jrcxz dword top + bogus o64 jrcxz dword short top + bogus o64 jrcxz dword near top + bogus jrcxz qword top + bogus jrcxz qword short top + bogus jrcxz qword near top + bogus o16 jrcxz qword top + bogus o16 jrcxz qword short top + bogus o16 jrcxz qword near top + bogus o32 jrcxz qword top + bogus o32 jrcxz qword short top + bogus o32 jrcxz qword near top + bogus o64 jrcxz qword top + bogus o64 jrcxz qword short top + bogus o64 jrcxz qword near top + bogus jrcxz strict top + bogus jrcxz strict short top + bogus jrcxz strict near top + bogus o16 jrcxz strict top + bogus o16 jrcxz strict short top + bogus o16 jrcxz strict near top + bogus o32 jrcxz strict top + bogus o32 jrcxz strict short top + bogus o32 jrcxz strict near top + bogus o64 jrcxz strict top + bogus o64 jrcxz strict short top + bogus o64 jrcxz strict near top + bogus jrcxz strict byte top + bogus jrcxz strict byte short top + bogus jrcxz strict byte near top + bogus o16 jrcxz strict byte top + bogus o16 jrcxz strict byte short top + bogus o16 jrcxz strict byte near top + bogus o32 jrcxz strict byte top + bogus o32 jrcxz strict byte short top + bogus o32 jrcxz strict byte near top + bogus o64 jrcxz strict byte top + bogus o64 jrcxz strict byte short top + bogus o64 jrcxz strict byte near top + bogus jrcxz strict word top + bogus jrcxz strict word short top + bogus jrcxz strict word near top + bogus o16 jrcxz strict word top + bogus o16 jrcxz strict word short top + bogus o16 jrcxz strict word near top + bogus o32 jrcxz strict word top + bogus o32 jrcxz strict word short top + bogus o32 jrcxz strict word near top + bogus o64 jrcxz strict word top + bogus o64 jrcxz strict word short top + bogus o64 jrcxz strict word near top + bogus jrcxz strict dword top + bogus jrcxz strict dword short top + bogus jrcxz strict dword near top + bogus o16 jrcxz strict dword top + bogus o16 jrcxz strict dword short top + bogus o16 jrcxz strict dword near top + bogus o32 jrcxz strict dword top + bogus o32 jrcxz strict dword short top + bogus o32 jrcxz strict dword near top + bogus o64 jrcxz strict dword top + bogus o64 jrcxz strict dword short top + bogus o64 jrcxz strict dword near top + bogus jrcxz strict qword top + bogus jrcxz strict qword short top + bogus jrcxz strict qword near top + bogus o16 jrcxz strict qword top + bogus o16 jrcxz strict qword short top + bogus o16 jrcxz strict qword near top + bogus o32 jrcxz strict qword top + bogus o32 jrcxz strict qword short top + bogus o32 jrcxz strict qword near top + bogus o64 jrcxz strict qword top + bogus o64 jrcxz strict qword short top + bogus o64 jrcxz strict qword near top + bogus jrcxz there + bogus jrcxz short there + bogus jrcxz near there + bogus o16 jrcxz there + bogus o16 jrcxz short there + bogus o16 jrcxz near there + bogus o32 jrcxz there + bogus o32 jrcxz short there + bogus o32 jrcxz near there + bogus o64 jrcxz there + bogus o64 jrcxz short there + bogus o64 jrcxz near there + bogus jrcxz byte there + bogus jrcxz byte short there + bogus jrcxz byte near there + bogus o16 jrcxz byte there + bogus o16 jrcxz byte short there + bogus o16 jrcxz byte near there + bogus o32 jrcxz byte there + bogus o32 jrcxz byte short there + bogus o32 jrcxz byte near there + bogus o64 jrcxz byte there + bogus o64 jrcxz byte short there + bogus o64 jrcxz byte near there + bogus jrcxz word there + bogus jrcxz word short there + bogus jrcxz word near there + bogus o16 jrcxz word there + bogus o16 jrcxz word short there + bogus o16 jrcxz word near there + bogus o32 jrcxz word there + bogus o32 jrcxz word short there + bogus o32 jrcxz word near there + bogus o64 jrcxz word there + bogus o64 jrcxz word short there + bogus o64 jrcxz word near there + bogus jrcxz dword there + bogus jrcxz dword short there + bogus jrcxz dword near there + bogus o16 jrcxz dword there + bogus o16 jrcxz dword short there + bogus o16 jrcxz dword near there + bogus o32 jrcxz dword there + bogus o32 jrcxz dword short there + bogus o32 jrcxz dword near there + bogus o64 jrcxz dword there + bogus o64 jrcxz dword short there + bogus o64 jrcxz dword near there + bogus jrcxz qword there + bogus jrcxz qword short there + bogus jrcxz qword near there + bogus o16 jrcxz qword there + bogus o16 jrcxz qword short there + bogus o16 jrcxz qword near there + bogus o32 jrcxz qword there + bogus o32 jrcxz qword short there + bogus o32 jrcxz qword near there + bogus o64 jrcxz qword there + bogus o64 jrcxz qword short there + bogus o64 jrcxz qword near there + bogus jrcxz strict there + bogus jrcxz strict short there + bogus jrcxz strict near there + bogus o16 jrcxz strict there + bogus o16 jrcxz strict short there + bogus o16 jrcxz strict near there + bogus o32 jrcxz strict there + bogus o32 jrcxz strict short there + bogus o32 jrcxz strict near there + bogus o64 jrcxz strict there + bogus o64 jrcxz strict short there + bogus o64 jrcxz strict near there + bogus jrcxz strict byte there + bogus jrcxz strict byte short there + bogus jrcxz strict byte near there + bogus o16 jrcxz strict byte there + bogus o16 jrcxz strict byte short there + bogus o16 jrcxz strict byte near there + bogus o32 jrcxz strict byte there + bogus o32 jrcxz strict byte short there + bogus o32 jrcxz strict byte near there + bogus o64 jrcxz strict byte there + bogus o64 jrcxz strict byte short there + bogus o64 jrcxz strict byte near there + bogus jrcxz strict word there + bogus jrcxz strict word short there + bogus jrcxz strict word near there + bogus o16 jrcxz strict word there + bogus o16 jrcxz strict word short there + bogus o16 jrcxz strict word near there + bogus o32 jrcxz strict word there + bogus o32 jrcxz strict word short there + bogus o32 jrcxz strict word near there + bogus o64 jrcxz strict word there + bogus o64 jrcxz strict word short there + bogus o64 jrcxz strict word near there + bogus jrcxz strict dword there + bogus jrcxz strict dword short there + bogus jrcxz strict dword near there + bogus o16 jrcxz strict dword there + bogus o16 jrcxz strict dword short there + bogus o16 jrcxz strict dword near there + bogus o32 jrcxz strict dword there + bogus o32 jrcxz strict dword short there + bogus o32 jrcxz strict dword near there + bogus o64 jrcxz strict dword there + bogus o64 jrcxz strict dword short there + bogus o64 jrcxz strict dword near there + bogus jrcxz strict qword there + bogus jrcxz strict qword short there + bogus jrcxz strict qword near there + bogus o16 jrcxz strict qword there + bogus o16 jrcxz strict qword short there + bogus o16 jrcxz strict qword near there + bogus o32 jrcxz strict qword there + bogus o32 jrcxz strict qword short there + bogus o32 jrcxz strict qword near there + bogus o64 jrcxz strict qword there + bogus o64 jrcxz strict qword short there + bogus o64 jrcxz strict qword near there +here_loop: + loop $ + loop short $ + bogus loop near $ + noq o16 loop $ + noq o16 loop short $ + bogus o16 loop near $ + noq o32 loop $ + noq o32 loop short $ + bogus o32 loop near $ + nowd o64 loop $ + nowd o64 loop short $ + bogus o64 loop near $ + bogus loop byte $ + bogus loop byte short $ + bogus loop byte near $ + bogus o16 loop byte $ + bogus o16 loop byte short $ + bogus o16 loop byte near $ + bogus o32 loop byte $ + bogus o32 loop byte short $ + bogus o32 loop byte near $ + bogus o64 loop byte $ + bogus o64 loop byte short $ + bogus o64 loop byte near $ + noq loop word $ + noq loop word short $ + bogus loop word near $ + noq o16 loop word $ + noq o16 loop word short $ + bogus o16 loop word near $ + bogus o32 loop word $ + bogus o32 loop word short $ + bogus o32 loop word near $ + bogus o64 loop word $ + bogus o64 loop word short $ + bogus o64 loop word near $ + noq loop dword $ + noq loop dword short $ + bogus loop dword near $ + bogus o16 loop dword $ + bogus o16 loop dword short $ + bogus o16 loop dword near $ + noq o32 loop dword $ + noq o32 loop dword short $ + bogus o32 loop dword near $ + bogus o64 loop dword $ + bogus o64 loop dword short $ + bogus o64 loop dword near $ + nowd loop qword $ + nowd loop qword short $ + bogus loop qword near $ + bogus o16 loop qword $ + bogus o16 loop qword short $ + bogus o16 loop qword near $ + bogus o32 loop qword $ + bogus o32 loop qword short $ + bogus o32 loop qword near $ + nowd o64 loop qword $ + nowd o64 loop qword short $ + bogus o64 loop qword near $ + loop strict $ + loop strict short $ + bogus loop strict near $ + noq o16 loop strict $ + noq o16 loop strict short $ + bogus o16 loop strict near $ + noq o32 loop strict $ + noq o32 loop strict short $ + bogus o32 loop strict near $ + nowd o64 loop strict $ + nowd o64 loop strict short $ + bogus o64 loop strict near $ + bogus loop strict byte $ + bogus loop strict byte short $ + bogus loop strict byte near $ + bogus o16 loop strict byte $ + bogus o16 loop strict byte short $ + bogus o16 loop strict byte near $ + bogus o32 loop strict byte $ + bogus o32 loop strict byte short $ + bogus o32 loop strict byte near $ + bogus o64 loop strict byte $ + bogus o64 loop strict byte short $ + bogus o64 loop strict byte near $ + noq loop strict word $ + noq loop strict word short $ + bogus loop strict word near $ + noq o16 loop strict word $ + noq o16 loop strict word short $ + bogus o16 loop strict word near $ + bogus o32 loop strict word $ + bogus o32 loop strict word short $ + bogus o32 loop strict word near $ + bogus o64 loop strict word $ + bogus o64 loop strict word short $ + bogus o64 loop strict word near $ + noq loop strict dword $ + noq loop strict dword short $ + bogus loop strict dword near $ + bogus o16 loop strict dword $ + bogus o16 loop strict dword short $ + bogus o16 loop strict dword near $ + noq o32 loop strict dword $ + noq o32 loop strict dword short $ + bogus o32 loop strict dword near $ + bogus o64 loop strict dword $ + bogus o64 loop strict dword short $ + bogus o64 loop strict dword near $ + nowd loop strict qword $ + nowd loop strict qword short $ + bogus loop strict qword near $ + bogus o16 loop strict qword $ + bogus o16 loop strict qword short $ + bogus o16 loop strict qword near $ + bogus o32 loop strict qword $ + bogus o32 loop strict qword short $ + bogus o32 loop strict qword near $ + nowd o64 loop strict qword $ + nowd o64 loop strict qword short $ + bogus o64 loop strict qword near $ + bogus loop top + bogus loop short top + bogus loop near top + bogus o16 loop top + bogus o16 loop short top + bogus o16 loop near top + bogus o32 loop top + bogus o32 loop short top + bogus o32 loop near top + bogus o64 loop top + bogus o64 loop short top + bogus o64 loop near top + bogus loop byte top + bogus loop byte short top + bogus loop byte near top + bogus o16 loop byte top + bogus o16 loop byte short top + bogus o16 loop byte near top + bogus o32 loop byte top + bogus o32 loop byte short top + bogus o32 loop byte near top + bogus o64 loop byte top + bogus o64 loop byte short top + bogus o64 loop byte near top + bogus loop word top + bogus loop word short top + bogus loop word near top + bogus o16 loop word top + bogus o16 loop word short top + bogus o16 loop word near top + bogus o32 loop word top + bogus o32 loop word short top + bogus o32 loop word near top + bogus o64 loop word top + bogus o64 loop word short top + bogus o64 loop word near top + bogus loop dword top + bogus loop dword short top + bogus loop dword near top + bogus o16 loop dword top + bogus o16 loop dword short top + bogus o16 loop dword near top + bogus o32 loop dword top + bogus o32 loop dword short top + bogus o32 loop dword near top + bogus o64 loop dword top + bogus o64 loop dword short top + bogus o64 loop dword near top + bogus loop qword top + bogus loop qword short top + bogus loop qword near top + bogus o16 loop qword top + bogus o16 loop qword short top + bogus o16 loop qword near top + bogus o32 loop qword top + bogus o32 loop qword short top + bogus o32 loop qword near top + bogus o64 loop qword top + bogus o64 loop qword short top + bogus o64 loop qword near top + bogus loop strict top + bogus loop strict short top + bogus loop strict near top + bogus o16 loop strict top + bogus o16 loop strict short top + bogus o16 loop strict near top + bogus o32 loop strict top + bogus o32 loop strict short top + bogus o32 loop strict near top + bogus o64 loop strict top + bogus o64 loop strict short top + bogus o64 loop strict near top + bogus loop strict byte top + bogus loop strict byte short top + bogus loop strict byte near top + bogus o16 loop strict byte top + bogus o16 loop strict byte short top + bogus o16 loop strict byte near top + bogus o32 loop strict byte top + bogus o32 loop strict byte short top + bogus o32 loop strict byte near top + bogus o64 loop strict byte top + bogus o64 loop strict byte short top + bogus o64 loop strict byte near top + bogus loop strict word top + bogus loop strict word short top + bogus loop strict word near top + bogus o16 loop strict word top + bogus o16 loop strict word short top + bogus o16 loop strict word near top + bogus o32 loop strict word top + bogus o32 loop strict word short top + bogus o32 loop strict word near top + bogus o64 loop strict word top + bogus o64 loop strict word short top + bogus o64 loop strict word near top + bogus loop strict dword top + bogus loop strict dword short top + bogus loop strict dword near top + bogus o16 loop strict dword top + bogus o16 loop strict dword short top + bogus o16 loop strict dword near top + bogus o32 loop strict dword top + bogus o32 loop strict dword short top + bogus o32 loop strict dword near top + bogus o64 loop strict dword top + bogus o64 loop strict dword short top + bogus o64 loop strict dword near top + bogus loop strict qword top + bogus loop strict qword short top + bogus loop strict qword near top + bogus o16 loop strict qword top + bogus o16 loop strict qword short top + bogus o16 loop strict qword near top + bogus o32 loop strict qword top + bogus o32 loop strict qword short top + bogus o32 loop strict qword near top + bogus o64 loop strict qword top + bogus o64 loop strict qword short top + bogus o64 loop strict qword near top + bogus loop there + bogus loop short there + bogus loop near there + bogus o16 loop there + bogus o16 loop short there + bogus o16 loop near there + bogus o32 loop there + bogus o32 loop short there + bogus o32 loop near there + bogus o64 loop there + bogus o64 loop short there + bogus o64 loop near there + bogus loop byte there + bogus loop byte short there + bogus loop byte near there + bogus o16 loop byte there + bogus o16 loop byte short there + bogus o16 loop byte near there + bogus o32 loop byte there + bogus o32 loop byte short there + bogus o32 loop byte near there + bogus o64 loop byte there + bogus o64 loop byte short there + bogus o64 loop byte near there + bogus loop word there + bogus loop word short there + bogus loop word near there + bogus o16 loop word there + bogus o16 loop word short there + bogus o16 loop word near there + bogus o32 loop word there + bogus o32 loop word short there + bogus o32 loop word near there + bogus o64 loop word there + bogus o64 loop word short there + bogus o64 loop word near there + bogus loop dword there + bogus loop dword short there + bogus loop dword near there + bogus o16 loop dword there + bogus o16 loop dword short there + bogus o16 loop dword near there + bogus o32 loop dword there + bogus o32 loop dword short there + bogus o32 loop dword near there + bogus o64 loop dword there + bogus o64 loop dword short there + bogus o64 loop dword near there + bogus loop qword there + bogus loop qword short there + bogus loop qword near there + bogus o16 loop qword there + bogus o16 loop qword short there + bogus o16 loop qword near there + bogus o32 loop qword there + bogus o32 loop qword short there + bogus o32 loop qword near there + bogus o64 loop qword there + bogus o64 loop qword short there + bogus o64 loop qword near there + bogus loop strict there + bogus loop strict short there + bogus loop strict near there + bogus o16 loop strict there + bogus o16 loop strict short there + bogus o16 loop strict near there + bogus o32 loop strict there + bogus o32 loop strict short there + bogus o32 loop strict near there + bogus o64 loop strict there + bogus o64 loop strict short there + bogus o64 loop strict near there + bogus loop strict byte there + bogus loop strict byte short there + bogus loop strict byte near there + bogus o16 loop strict byte there + bogus o16 loop strict byte short there + bogus o16 loop strict byte near there + bogus o32 loop strict byte there + bogus o32 loop strict byte short there + bogus o32 loop strict byte near there + bogus o64 loop strict byte there + bogus o64 loop strict byte short there + bogus o64 loop strict byte near there + bogus loop strict word there + bogus loop strict word short there + bogus loop strict word near there + bogus o16 loop strict word there + bogus o16 loop strict word short there + bogus o16 loop strict word near there + bogus o32 loop strict word there + bogus o32 loop strict word short there + bogus o32 loop strict word near there + bogus o64 loop strict word there + bogus o64 loop strict word short there + bogus o64 loop strict word near there + bogus loop strict dword there + bogus loop strict dword short there + bogus loop strict dword near there + bogus o16 loop strict dword there + bogus o16 loop strict dword short there + bogus o16 loop strict dword near there + bogus o32 loop strict dword there + bogus o32 loop strict dword short there + bogus o32 loop strict dword near there + bogus o64 loop strict dword there + bogus o64 loop strict dword short there + bogus o64 loop strict dword near there + bogus loop strict qword there + bogus loop strict qword short there + bogus loop strict qword near there + bogus o16 loop strict qword there + bogus o16 loop strict qword short there + bogus o16 loop strict qword near there + bogus o32 loop strict qword there + bogus o32 loop strict qword short there + bogus o32 loop strict qword near there + bogus o64 loop strict qword there + bogus o64 loop strict qword short there + bogus o64 loop strict qword near there +here_loope: + loope $ + loope short $ + bogus loope near $ + noq o16 loope $ + noq o16 loope short $ + bogus o16 loope near $ + noq o32 loope $ + noq o32 loope short $ + bogus o32 loope near $ + nowd o64 loope $ + nowd o64 loope short $ + bogus o64 loope near $ + bogus loope byte $ + bogus loope byte short $ + bogus loope byte near $ + bogus o16 loope byte $ + bogus o16 loope byte short $ + bogus o16 loope byte near $ + bogus o32 loope byte $ + bogus o32 loope byte short $ + bogus o32 loope byte near $ + bogus o64 loope byte $ + bogus o64 loope byte short $ + bogus o64 loope byte near $ + noq loope word $ + noq loope word short $ + bogus loope word near $ + noq o16 loope word $ + noq o16 loope word short $ + bogus o16 loope word near $ + bogus o32 loope word $ + bogus o32 loope word short $ + bogus o32 loope word near $ + bogus o64 loope word $ + bogus o64 loope word short $ + bogus o64 loope word near $ + noq loope dword $ + noq loope dword short $ + bogus loope dword near $ + bogus o16 loope dword $ + bogus o16 loope dword short $ + bogus o16 loope dword near $ + noq o32 loope dword $ + noq o32 loope dword short $ + bogus o32 loope dword near $ + bogus o64 loope dword $ + bogus o64 loope dword short $ + bogus o64 loope dword near $ + nowd loope qword $ + nowd loope qword short $ + bogus loope qword near $ + bogus o16 loope qword $ + bogus o16 loope qword short $ + bogus o16 loope qword near $ + bogus o32 loope qword $ + bogus o32 loope qword short $ + bogus o32 loope qword near $ + nowd o64 loope qword $ + nowd o64 loope qword short $ + bogus o64 loope qword near $ + loope strict $ + loope strict short $ + bogus loope strict near $ + noq o16 loope strict $ + noq o16 loope strict short $ + bogus o16 loope strict near $ + noq o32 loope strict $ + noq o32 loope strict short $ + bogus o32 loope strict near $ + nowd o64 loope strict $ + nowd o64 loope strict short $ + bogus o64 loope strict near $ + bogus loope strict byte $ + bogus loope strict byte short $ + bogus loope strict byte near $ + bogus o16 loope strict byte $ + bogus o16 loope strict byte short $ + bogus o16 loope strict byte near $ + bogus o32 loope strict byte $ + bogus o32 loope strict byte short $ + bogus o32 loope strict byte near $ + bogus o64 loope strict byte $ + bogus o64 loope strict byte short $ + bogus o64 loope strict byte near $ + noq loope strict word $ + noq loope strict word short $ + bogus loope strict word near $ + noq o16 loope strict word $ + noq o16 loope strict word short $ + bogus o16 loope strict word near $ + bogus o32 loope strict word $ + bogus o32 loope strict word short $ + bogus o32 loope strict word near $ + bogus o64 loope strict word $ + bogus o64 loope strict word short $ + bogus o64 loope strict word near $ + noq loope strict dword $ + noq loope strict dword short $ + bogus loope strict dword near $ + bogus o16 loope strict dword $ + bogus o16 loope strict dword short $ + bogus o16 loope strict dword near $ + noq o32 loope strict dword $ + noq o32 loope strict dword short $ + bogus o32 loope strict dword near $ + bogus o64 loope strict dword $ + bogus o64 loope strict dword short $ + bogus o64 loope strict dword near $ + nowd loope strict qword $ + nowd loope strict qword short $ + bogus loope strict qword near $ + bogus o16 loope strict qword $ + bogus o16 loope strict qword short $ + bogus o16 loope strict qword near $ + bogus o32 loope strict qword $ + bogus o32 loope strict qword short $ + bogus o32 loope strict qword near $ + nowd o64 loope strict qword $ + nowd o64 loope strict qword short $ + bogus o64 loope strict qword near $ + bogus loope top + bogus loope short top + bogus loope near top + bogus o16 loope top + bogus o16 loope short top + bogus o16 loope near top + bogus o32 loope top + bogus o32 loope short top + bogus o32 loope near top + bogus o64 loope top + bogus o64 loope short top + bogus o64 loope near top + bogus loope byte top + bogus loope byte short top + bogus loope byte near top + bogus o16 loope byte top + bogus o16 loope byte short top + bogus o16 loope byte near top + bogus o32 loope byte top + bogus o32 loope byte short top + bogus o32 loope byte near top + bogus o64 loope byte top + bogus o64 loope byte short top + bogus o64 loope byte near top + bogus loope word top + bogus loope word short top + bogus loope word near top + bogus o16 loope word top + bogus o16 loope word short top + bogus o16 loope word near top + bogus o32 loope word top + bogus o32 loope word short top + bogus o32 loope word near top + bogus o64 loope word top + bogus o64 loope word short top + bogus o64 loope word near top + bogus loope dword top + bogus loope dword short top + bogus loope dword near top + bogus o16 loope dword top + bogus o16 loope dword short top + bogus o16 loope dword near top + bogus o32 loope dword top + bogus o32 loope dword short top + bogus o32 loope dword near top + bogus o64 loope dword top + bogus o64 loope dword short top + bogus o64 loope dword near top + bogus loope qword top + bogus loope qword short top + bogus loope qword near top + bogus o16 loope qword top + bogus o16 loope qword short top + bogus o16 loope qword near top + bogus o32 loope qword top + bogus o32 loope qword short top + bogus o32 loope qword near top + bogus o64 loope qword top + bogus o64 loope qword short top + bogus o64 loope qword near top + bogus loope strict top + bogus loope strict short top + bogus loope strict near top + bogus o16 loope strict top + bogus o16 loope strict short top + bogus o16 loope strict near top + bogus o32 loope strict top + bogus o32 loope strict short top + bogus o32 loope strict near top + bogus o64 loope strict top + bogus o64 loope strict short top + bogus o64 loope strict near top + bogus loope strict byte top + bogus loope strict byte short top + bogus loope strict byte near top + bogus o16 loope strict byte top + bogus o16 loope strict byte short top + bogus o16 loope strict byte near top + bogus o32 loope strict byte top + bogus o32 loope strict byte short top + bogus o32 loope strict byte near top + bogus o64 loope strict byte top + bogus o64 loope strict byte short top + bogus o64 loope strict byte near top + bogus loope strict word top + bogus loope strict word short top + bogus loope strict word near top + bogus o16 loope strict word top + bogus o16 loope strict word short top + bogus o16 loope strict word near top + bogus o32 loope strict word top + bogus o32 loope strict word short top + bogus o32 loope strict word near top + bogus o64 loope strict word top + bogus o64 loope strict word short top + bogus o64 loope strict word near top + bogus loope strict dword top + bogus loope strict dword short top + bogus loope strict dword near top + bogus o16 loope strict dword top + bogus o16 loope strict dword short top + bogus o16 loope strict dword near top + bogus o32 loope strict dword top + bogus o32 loope strict dword short top + bogus o32 loope strict dword near top + bogus o64 loope strict dword top + bogus o64 loope strict dword short top + bogus o64 loope strict dword near top + bogus loope strict qword top + bogus loope strict qword short top + bogus loope strict qword near top + bogus o16 loope strict qword top + bogus o16 loope strict qword short top + bogus o16 loope strict qword near top + bogus o32 loope strict qword top + bogus o32 loope strict qword short top + bogus o32 loope strict qword near top + bogus o64 loope strict qword top + bogus o64 loope strict qword short top + bogus o64 loope strict qword near top + bogus loope there + bogus loope short there + bogus loope near there + bogus o16 loope there + bogus o16 loope short there + bogus o16 loope near there + bogus o32 loope there + bogus o32 loope short there + bogus o32 loope near there + bogus o64 loope there + bogus o64 loope short there + bogus o64 loope near there + bogus loope byte there + bogus loope byte short there + bogus loope byte near there + bogus o16 loope byte there + bogus o16 loope byte short there + bogus o16 loope byte near there + bogus o32 loope byte there + bogus o32 loope byte short there + bogus o32 loope byte near there + bogus o64 loope byte there + bogus o64 loope byte short there + bogus o64 loope byte near there + bogus loope word there + bogus loope word short there + bogus loope word near there + bogus o16 loope word there + bogus o16 loope word short there + bogus o16 loope word near there + bogus o32 loope word there + bogus o32 loope word short there + bogus o32 loope word near there + bogus o64 loope word there + bogus o64 loope word short there + bogus o64 loope word near there + bogus loope dword there + bogus loope dword short there + bogus loope dword near there + bogus o16 loope dword there + bogus o16 loope dword short there + bogus o16 loope dword near there + bogus o32 loope dword there + bogus o32 loope dword short there + bogus o32 loope dword near there + bogus o64 loope dword there + bogus o64 loope dword short there + bogus o64 loope dword near there + bogus loope qword there + bogus loope qword short there + bogus loope qword near there + bogus o16 loope qword there + bogus o16 loope qword short there + bogus o16 loope qword near there + bogus o32 loope qword there + bogus o32 loope qword short there + bogus o32 loope qword near there + bogus o64 loope qword there + bogus o64 loope qword short there + bogus o64 loope qword near there + bogus loope strict there + bogus loope strict short there + bogus loope strict near there + bogus o16 loope strict there + bogus o16 loope strict short there + bogus o16 loope strict near there + bogus o32 loope strict there + bogus o32 loope strict short there + bogus o32 loope strict near there + bogus o64 loope strict there + bogus o64 loope strict short there + bogus o64 loope strict near there + bogus loope strict byte there + bogus loope strict byte short there + bogus loope strict byte near there + bogus o16 loope strict byte there + bogus o16 loope strict byte short there + bogus o16 loope strict byte near there + bogus o32 loope strict byte there + bogus o32 loope strict byte short there + bogus o32 loope strict byte near there + bogus o64 loope strict byte there + bogus o64 loope strict byte short there + bogus o64 loope strict byte near there + bogus loope strict word there + bogus loope strict word short there + bogus loope strict word near there + bogus o16 loope strict word there + bogus o16 loope strict word short there + bogus o16 loope strict word near there + bogus o32 loope strict word there + bogus o32 loope strict word short there + bogus o32 loope strict word near there + bogus o64 loope strict word there + bogus o64 loope strict word short there + bogus o64 loope strict word near there + bogus loope strict dword there + bogus loope strict dword short there + bogus loope strict dword near there + bogus o16 loope strict dword there + bogus o16 loope strict dword short there + bogus o16 loope strict dword near there + bogus o32 loope strict dword there + bogus o32 loope strict dword short there + bogus o32 loope strict dword near there + bogus o64 loope strict dword there + bogus o64 loope strict dword short there + bogus o64 loope strict dword near there + bogus loope strict qword there + bogus loope strict qword short there + bogus loope strict qword near there + bogus o16 loope strict qword there + bogus o16 loope strict qword short there + bogus o16 loope strict qword near there + bogus o32 loope strict qword there + bogus o32 loope strict qword short there + bogus o32 loope strict qword near there + bogus o64 loope strict qword there + bogus o64 loope strict qword short there + bogus o64 loope strict qword near there +here_loopne: + loopne $ + loopne short $ + bogus loopne near $ + noq o16 loopne $ + noq o16 loopne short $ + bogus o16 loopne near $ + noq o32 loopne $ + noq o32 loopne short $ + bogus o32 loopne near $ + nowd o64 loopne $ + nowd o64 loopne short $ + bogus o64 loopne near $ + bogus loopne byte $ + bogus loopne byte short $ + bogus loopne byte near $ + bogus o16 loopne byte $ + bogus o16 loopne byte short $ + bogus o16 loopne byte near $ + bogus o32 loopne byte $ + bogus o32 loopne byte short $ + bogus o32 loopne byte near $ + bogus o64 loopne byte $ + bogus o64 loopne byte short $ + bogus o64 loopne byte near $ + noq loopne word $ + noq loopne word short $ + bogus loopne word near $ + noq o16 loopne word $ + noq o16 loopne word short $ + bogus o16 loopne word near $ + bogus o32 loopne word $ + bogus o32 loopne word short $ + bogus o32 loopne word near $ + bogus o64 loopne word $ + bogus o64 loopne word short $ + bogus o64 loopne word near $ + noq loopne dword $ + noq loopne dword short $ + bogus loopne dword near $ + bogus o16 loopne dword $ + bogus o16 loopne dword short $ + bogus o16 loopne dword near $ + noq o32 loopne dword $ + noq o32 loopne dword short $ + bogus o32 loopne dword near $ + bogus o64 loopne dword $ + bogus o64 loopne dword short $ + bogus o64 loopne dword near $ + nowd loopne qword $ + nowd loopne qword short $ + bogus loopne qword near $ + bogus o16 loopne qword $ + bogus o16 loopne qword short $ + bogus o16 loopne qword near $ + bogus o32 loopne qword $ + bogus o32 loopne qword short $ + bogus o32 loopne qword near $ + nowd o64 loopne qword $ + nowd o64 loopne qword short $ + bogus o64 loopne qword near $ + loopne strict $ + loopne strict short $ + bogus loopne strict near $ + noq o16 loopne strict $ + noq o16 loopne strict short $ + bogus o16 loopne strict near $ + noq o32 loopne strict $ + noq o32 loopne strict short $ + bogus o32 loopne strict near $ + nowd o64 loopne strict $ + nowd o64 loopne strict short $ + bogus o64 loopne strict near $ + bogus loopne strict byte $ + bogus loopne strict byte short $ + bogus loopne strict byte near $ + bogus o16 loopne strict byte $ + bogus o16 loopne strict byte short $ + bogus o16 loopne strict byte near $ + bogus o32 loopne strict byte $ + bogus o32 loopne strict byte short $ + bogus o32 loopne strict byte near $ + bogus o64 loopne strict byte $ + bogus o64 loopne strict byte short $ + bogus o64 loopne strict byte near $ + noq loopne strict word $ + noq loopne strict word short $ + bogus loopne strict word near $ + noq o16 loopne strict word $ + noq o16 loopne strict word short $ + bogus o16 loopne strict word near $ + bogus o32 loopne strict word $ + bogus o32 loopne strict word short $ + bogus o32 loopne strict word near $ + bogus o64 loopne strict word $ + bogus o64 loopne strict word short $ + bogus o64 loopne strict word near $ + noq loopne strict dword $ + noq loopne strict dword short $ + bogus loopne strict dword near $ + bogus o16 loopne strict dword $ + bogus o16 loopne strict dword short $ + bogus o16 loopne strict dword near $ + noq o32 loopne strict dword $ + noq o32 loopne strict dword short $ + bogus o32 loopne strict dword near $ + bogus o64 loopne strict dword $ + bogus o64 loopne strict dword short $ + bogus o64 loopne strict dword near $ + nowd loopne strict qword $ + nowd loopne strict qword short $ + bogus loopne strict qword near $ + bogus o16 loopne strict qword $ + bogus o16 loopne strict qword short $ + bogus o16 loopne strict qword near $ + bogus o32 loopne strict qword $ + bogus o32 loopne strict qword short $ + bogus o32 loopne strict qword near $ + nowd o64 loopne strict qword $ + nowd o64 loopne strict qword short $ + bogus o64 loopne strict qword near $ + bogus loopne top + bogus loopne short top + bogus loopne near top + bogus o16 loopne top + bogus o16 loopne short top + bogus o16 loopne near top + bogus o32 loopne top + bogus o32 loopne short top + bogus o32 loopne near top + bogus o64 loopne top + bogus o64 loopne short top + bogus o64 loopne near top + bogus loopne byte top + bogus loopne byte short top + bogus loopne byte near top + bogus o16 loopne byte top + bogus o16 loopne byte short top + bogus o16 loopne byte near top + bogus o32 loopne byte top + bogus o32 loopne byte short top + bogus o32 loopne byte near top + bogus o64 loopne byte top + bogus o64 loopne byte short top + bogus o64 loopne byte near top + bogus loopne word top + bogus loopne word short top + bogus loopne word near top + bogus o16 loopne word top + bogus o16 loopne word short top + bogus o16 loopne word near top + bogus o32 loopne word top + bogus o32 loopne word short top + bogus o32 loopne word near top + bogus o64 loopne word top + bogus o64 loopne word short top + bogus o64 loopne word near top + bogus loopne dword top + bogus loopne dword short top + bogus loopne dword near top + bogus o16 loopne dword top + bogus o16 loopne dword short top + bogus o16 loopne dword near top + bogus o32 loopne dword top + bogus o32 loopne dword short top + bogus o32 loopne dword near top + bogus o64 loopne dword top + bogus o64 loopne dword short top + bogus o64 loopne dword near top + bogus loopne qword top + bogus loopne qword short top + bogus loopne qword near top + bogus o16 loopne qword top + bogus o16 loopne qword short top + bogus o16 loopne qword near top + bogus o32 loopne qword top + bogus o32 loopne qword short top + bogus o32 loopne qword near top + bogus o64 loopne qword top + bogus o64 loopne qword short top + bogus o64 loopne qword near top + bogus loopne strict top + bogus loopne strict short top + bogus loopne strict near top + bogus o16 loopne strict top + bogus o16 loopne strict short top + bogus o16 loopne strict near top + bogus o32 loopne strict top + bogus o32 loopne strict short top + bogus o32 loopne strict near top + bogus o64 loopne strict top + bogus o64 loopne strict short top + bogus o64 loopne strict near top + bogus loopne strict byte top + bogus loopne strict byte short top + bogus loopne strict byte near top + bogus o16 loopne strict byte top + bogus o16 loopne strict byte short top + bogus o16 loopne strict byte near top + bogus o32 loopne strict byte top + bogus o32 loopne strict byte short top + bogus o32 loopne strict byte near top + bogus o64 loopne strict byte top + bogus o64 loopne strict byte short top + bogus o64 loopne strict byte near top + bogus loopne strict word top + bogus loopne strict word short top + bogus loopne strict word near top + bogus o16 loopne strict word top + bogus o16 loopne strict word short top + bogus o16 loopne strict word near top + bogus o32 loopne strict word top + bogus o32 loopne strict word short top + bogus o32 loopne strict word near top + bogus o64 loopne strict word top + bogus o64 loopne strict word short top + bogus o64 loopne strict word near top + bogus loopne strict dword top + bogus loopne strict dword short top + bogus loopne strict dword near top + bogus o16 loopne strict dword top + bogus o16 loopne strict dword short top + bogus o16 loopne strict dword near top + bogus o32 loopne strict dword top + bogus o32 loopne strict dword short top + bogus o32 loopne strict dword near top + bogus o64 loopne strict dword top + bogus o64 loopne strict dword short top + bogus o64 loopne strict dword near top + bogus loopne strict qword top + bogus loopne strict qword short top + bogus loopne strict qword near top + bogus o16 loopne strict qword top + bogus o16 loopne strict qword short top + bogus o16 loopne strict qword near top + bogus o32 loopne strict qword top + bogus o32 loopne strict qword short top + bogus o32 loopne strict qword near top + bogus o64 loopne strict qword top + bogus o64 loopne strict qword short top + bogus o64 loopne strict qword near top + bogus loopne there + bogus loopne short there + bogus loopne near there + bogus o16 loopne there + bogus o16 loopne short there + bogus o16 loopne near there + bogus o32 loopne there + bogus o32 loopne short there + bogus o32 loopne near there + bogus o64 loopne there + bogus o64 loopne short there + bogus o64 loopne near there + bogus loopne byte there + bogus loopne byte short there + bogus loopne byte near there + bogus o16 loopne byte there + bogus o16 loopne byte short there + bogus o16 loopne byte near there + bogus o32 loopne byte there + bogus o32 loopne byte short there + bogus o32 loopne byte near there + bogus o64 loopne byte there + bogus o64 loopne byte short there + bogus o64 loopne byte near there + bogus loopne word there + bogus loopne word short there + bogus loopne word near there + bogus o16 loopne word there + bogus o16 loopne word short there + bogus o16 loopne word near there + bogus o32 loopne word there + bogus o32 loopne word short there + bogus o32 loopne word near there + bogus o64 loopne word there + bogus o64 loopne word short there + bogus o64 loopne word near there + bogus loopne dword there + bogus loopne dword short there + bogus loopne dword near there + bogus o16 loopne dword there + bogus o16 loopne dword short there + bogus o16 loopne dword near there + bogus o32 loopne dword there + bogus o32 loopne dword short there + bogus o32 loopne dword near there + bogus o64 loopne dword there + bogus o64 loopne dword short there + bogus o64 loopne dword near there + bogus loopne qword there + bogus loopne qword short there + bogus loopne qword near there + bogus o16 loopne qword there + bogus o16 loopne qword short there + bogus o16 loopne qword near there + bogus o32 loopne qword there + bogus o32 loopne qword short there + bogus o32 loopne qword near there + bogus o64 loopne qword there + bogus o64 loopne qword short there + bogus o64 loopne qword near there + bogus loopne strict there + bogus loopne strict short there + bogus loopne strict near there + bogus o16 loopne strict there + bogus o16 loopne strict short there + bogus o16 loopne strict near there + bogus o32 loopne strict there + bogus o32 loopne strict short there + bogus o32 loopne strict near there + bogus o64 loopne strict there + bogus o64 loopne strict short there + bogus o64 loopne strict near there + bogus loopne strict byte there + bogus loopne strict byte short there + bogus loopne strict byte near there + bogus o16 loopne strict byte there + bogus o16 loopne strict byte short there + bogus o16 loopne strict byte near there + bogus o32 loopne strict byte there + bogus o32 loopne strict byte short there + bogus o32 loopne strict byte near there + bogus o64 loopne strict byte there + bogus o64 loopne strict byte short there + bogus o64 loopne strict byte near there + bogus loopne strict word there + bogus loopne strict word short there + bogus loopne strict word near there + bogus o16 loopne strict word there + bogus o16 loopne strict word short there + bogus o16 loopne strict word near there + bogus o32 loopne strict word there + bogus o32 loopne strict word short there + bogus o32 loopne strict word near there + bogus o64 loopne strict word there + bogus o64 loopne strict word short there + bogus o64 loopne strict word near there + bogus loopne strict dword there + bogus loopne strict dword short there + bogus loopne strict dword near there + bogus o16 loopne strict dword there + bogus o16 loopne strict dword short there + bogus o16 loopne strict dword near there + bogus o32 loopne strict dword there + bogus o32 loopne strict dword short there + bogus o32 loopne strict dword near there + bogus o64 loopne strict dword there + bogus o64 loopne strict dword short there + bogus o64 loopne strict dword near there + bogus loopne strict qword there + bogus loopne strict qword short there + bogus loopne strict qword near there + bogus o16 loopne strict qword there + bogus o16 loopne strict qword short there + bogus o16 loopne strict qword near there + bogus o32 loopne strict qword there + bogus o32 loopne strict qword short there + bogus o32 loopne strict qword near there + bogus o64 loopne strict qword there + bogus o64 loopne strict qword short there + bogus o64 loopne strict qword near there + + section text2 +there: + ret diff --git a/test/jmpxx.pl b/test/jmpxx.pl new file mode 100644 index 00000000..0a53a51c --- /dev/null +++ b/test/jmpxx.pl @@ -0,0 +1,97 @@ +#!/usr/bin/perl + +use strict; +use integer; + +my $bw = 1; +my @errs = (); +foreach my $errf (@ARGV) { + if (open(my $e, '<', $errf)) { + while (defined(my $l = <$e>)) { + if ($l =~ /^.*?\:([0-9]+)\:/) { + $errs[$1] |= $bw; + } + } + close($e); + } + $bw <<= 1; +} + +my $ln = 0; + +$ln++; print "%pragma list options -befms\n"; +$ln++; print "%ifndef ERR\n"; +$ln++; print " %define ERR 0\n"; +$ln++; print "%endif\n"; + +my @nots = (''); + +for (my $cc = 1; $cc < 7; $cc++) { + my $ss = 'no'; + $ss .= 'w' if ($cc & 1); + $ss .= 'd' if ($cc & 2); + $ss .= 'q' if ($cc & 4); + $ln++; print "%macro $ss 1+.nolist\n"; + $ln++; printf " %%if ERR || !(__BITS__ & 0x%02x)\n", $cc << 4; + $ln++; print "\t%1\n"; + $ln++; print " %endif\n"; + $ln++; print "%endmacro\n"; + push(@nots, "$ss"); +} +$ln++; print "%macro bogus 1+.nolist\n"; +$ln++; printf " %%if ERR\n"; +$ln++; print "\t%1\n"; +$ln++; print " %endif\n"; +$ln++; print "%endmacro\n"; +push(@nots, 'bogus'); + +$ln++; print "\n"; + +$ln++; print "\tsection text1\n"; +$ln++; print "top:\n"; +$ln++; print "\ttimes 128 nop\n"; +$ln++; print "\n"; + +foreach my $insn ('jmp', 'call', 'jz', 'jcxz', 'jecxz', 'jrcxz', + 'loop', 'loope', 'loopne') { + $ln++; print "here_$insn:\n"; + + foreach my $tgt ('$', 'top', 'there') { + foreach my $str ('', 'strict') { + foreach my $sz ('', 'byte', 'word', 'dword', 'qword') { + foreach my $o ('', 'o16', 'o32', 'o64') { + foreach my $sn ('', 'short', 'near') { + my $is_short = + ($sn eq 'short' || $insn =~ /^(j\w?cxz|loop\w*)$/); + + $ln++; + $errs[$ln] |= 3 if ($sz eq 'qword' || $o eq 'o64' + || $insn eq 'jrcxz'); + $errs[$ln] |= 4 if ($sz =~ /^d?word$'/ || $o =~ /^o(16|32)$/ || + $insn eq 'jcxz'); + if (($sz eq 'word' && $o =~ /^o(32|64)$/) || + ($sz eq 'dword' && $o =~ /^o(16|64)$/) || + ($sz eq 'qword' && $o =~ /^o(16|32)$/) || + ($sz eq 'byte') || + ($is_short && + ($sn eq 'near' || $tgt ne '$' || $insn eq 'call'))) { + $errs[$ln] |= 7; + } + + my $is_short = + + printf " %-5s %s\n", + $nots[$errs[$ln]], + join(' ', grep { $_ ne '' } + ($o,$insn,$str,$sz,$sn,$tgt)); + } + } + } + } + } +} + +$ln++; print "\n"; +$ln++; print "\tsection text2\n"; +$ln++; print "there:\n"; +$ln++; print "\tret\n"; diff --git a/travis/test/_version.json b/travis/test/_version.json index 2bd4c7b8..f4dc11b1 100644 --- a/travis/test/_version.json +++ b/travis/test/_version.json @@ -8,5 +8,5 @@ } } ], - "error": "over" + "update": false } diff --git a/travis/test/jmpxx-o0.bin16.t b/travis/test/jmpxx-o0.bin16.t new file mode 100644 index 0000000000000000000000000000000000000000..1ac077a0bc5b861a88ae8d249a21b53c4e8ec5c9 GIT binary patch literal 1621 zcmc&yU5JcP7~buiD;K`n3&{mHdm*7Max9OY7Wd84m zZE?bZN@}=JG!xcKDJrSqpT%N$D2HlWYL)cg2jTmW<9Cj;&hRKO;`oi@VaG2WKZ751 z_!|5`_?~b-m~T10>G+!CUUYhZ%Z@KN?sk0E@oD&sblZhv;k3W^T=S6TCz>B?Oa<<1 zzN`6;=G&V4;IHbM8cY&0w;{ z@-~FG4U_{M49VO5gR47#aqqmPE=#8@owSBJfObpAEX9@%SxUq2ws@bkLwK980n=tn zn=Ea#v>u%%V4bBkmR4I@X=yq966rPyFBG2d?;TLIPthJlI~Aq^ZHl%kYE`sFQ8WAo zh4)EK!fSJLL~%nQisu5ef%*b&%SrOa-R+ zP!%u>)AJ(Vf_#QV@yC1=zX!6wXdb1vo`&IG07Jka@W_V);a-1`8$qtfl<&1s{1x~D ze5ytFgQqOqC@=!N244B_X)S&bObjv*q#qK+edt^VdVwC_z2vDIt_$b{GQe>k9tro- zL3Rb%4#~N&OwM9gyQD0s(UP;3ZE}SckECp}XOr}^E-aI^*wrp6OKOa}u*|r{u69XT TQe(`8WyUOawM)v98V`Q~%)B@y literal 0 HcmV?d00001 diff --git a/travis/test/jmpxx-o0.bin32.t b/travis/test/jmpxx-o0.bin32.t new file mode 100644 index 0000000000000000000000000000000000000000..c7c7e82b533f57fd6a3c8c76c84ad4c735e8a80e GIT binary patch literal 1825 zcmc)JKS-2e90%|_@05!0r3eRu5Tb~P8gj8AqQN2JhFosZ!Q!ceBt)`78srsjNRV4@ zxy1$v2Lp#&u0e_sxxU}u6Ft6WQ$hOtKF{yZ^FHXkIz9b= zzf8T^Y;IfGl&PUm+mTD+qlOz`Gr!XPC;pWGyGvJXvuT!rGE3qj8)Z_Gdci6)kC;Qu zS~J5*krYUtOpzQ=W6#4H3PH)Vm75`I4P0> z$&)FP14>Vb<7|wP5vhmq><~gB22;A9lPu{Y88B-3twtla4wMJ_ZW@Gqfuq*#DhR*x z{}4C0?6-0K=MZ}k`XYYrV3o(;OAtPXcxcjX&!qQM9C58jb&Ma7yJVmqgjt#25pRpV z;tlZ{#KEg>yCl8yVwY>3<~<$c1UZfy+hm>)Yxv!Ra93<^NhE^s2*kmp+iFSncExWH z6O#m6WSy)fgYc8gSH$Cej;8Sa=vP-R#hV`pZS_S-}hPk#HQV}YBR#}nXlRNeV@foY}gH}HXZCAQFj_lQ-lI^d_r|tbg4klm}h9C_+V`;++JVF3B za0N9ug=6TX9Vd8$X9(dI>Tm&PZ~_%LfL+*xby$V6#pnIM$%1XtpMx35!xT)y7!1Pz zn4aYWUf~Jupa~v~(BvSbpqsM1Lj(`tLjx}19I9{xhp-1*mV)^?Zt>H8M8SO5es;^Y zOSiZr7v;R1m3f(y<1#BV(sVi7mXQo)OL{VEyLO8iX&lyV8Ocz#q$g{#Dl2kdZp#h1 YCd<~9Mz62gFv+Q#11M2Se$ibT#7Nm`Kyi~5?(;&x+g3>#~-SZmsn zAA2xMnvzMw(tg~V`Fu9CkZ|wke7(;(-Q6zV6e;(d*ZXtcpYQvezMb#QWd84uC7H93 zQZ-ym%$&GVYL%+t?@1CK`bDKJrAqbh55oJ9;GgQMD#IgQhrJF$`L5>Mn)@~PA=3l8HDA-*skuY*CHNMf&3bL}+5ja<7N#NG zHdtt2VaVU^FIt)TgMAl-T7=FCWyR2G&?t05C>A;prgrO1p%12yGLp zL1qisB(y2i`=ldY z>%8uV(q2V-6zx{D6PfLxM$uM9n-y(Tv>twq&#v;i!s{|<6c>{^>$JQwQCvt&o%mXA zmsfc3&Hb5u#IJsCl(Xg4KRI@BF^U%f4XTRn$O7a`A&NhO4`3F|xaMR5uNcKILm3Ta z1SN_eA~OUA!5x?FchU=Y16&84pxrfF!@g`Nr$WK~;FPb`QT!RqgLl=)zIBp=n*ifr z3_Nqq$JO{~Q9K;V{ZIx_qPP#49?%WCT(-kW8(a%G3o@X|HIIjV^`RUJv<<^d3udKD>!l^8Y#3%rFe_bJ IFD>!l2e|fHh5!Hn literal 0 HcmV?d00001 diff --git a/travis/test/jmpxx-o1.bin32.t b/travis/test/jmpxx-o1.bin32.t new file mode 100644 index 0000000000000000000000000000000000000000..631b1e6fe91e16caae0b64e7525e1f1f14cc7e78 GIT binary patch literal 1873 zcmc)JO-K}B7zc2-b)h;q(ZNGSL=i{_4;4{C1koWnNDx9q5lFmI2MG~_5Dz+sy==%5 zNg+WVDk2IzNMM23CnAy&dsrg(L*#v12oEK+JM(V;|1;9-kaej@=J~zP*Urj}4i5g` zA5*K>>lG`9GF23+5=KdU6hs3Y=1016<5&6LyXma0*UdCg=9M_X#yA<1dekcO2=M@M z*P1(=43i;}B^i(D`Hp5?Brw{*-V;&=9?3g zmiH#E?BYFX7jCjz_6PSk5aRdP3zTjZTiDn^wo1JzRJs|l5z!Rtb(}PkdH|~AD_I0e ze-h`}m?L?qbAi(D5HpCWK)>W zwmih?`L2lX{jT~)U(tcTFV8;%@dfSC(I&lP;*qFzsD|-=vWK+RJikTe+r=$nv$#QA z53!hxjsOqK^OwX$h)Jai7D$nNsCs@*=5NI*@rBs5hR=H~#9|^kstNYKh@T-QCIRNj z9LXm<|Gms-#5dxk_*5K&SbQ8E_oX)?4o9sa-X}{kB#k@v%e+_Y5ii3F<&c*u2NLlr z-i>DQjd-=ne%Y3-Du=jS=4$p_-(~TQk}X+P3URs2)$F;x%iioD X#WxDJU{xW+8wCQw2XB^1()8#i89H_#<`0bWY0RxP3+T0}@B#4K{kF`OwhQe-UW zOy~c!9|-z5@8S2J!-2#5^!xw2qK_=go{ieCoSXLls18*qK>=JyjU|Bv%piggM&QE` z2GH~zC#pjgN>Bh7QrD8e0%j0F2qW-e2m{NM{69(84ms^W8(PqS8kC_39+=d!h9%4) zh6x1FWylV+p#=@7K^cnRf!VUGVF`1HVFH1r(tEdo56xHqi`%|UQR(f;U0IZ_+-!JV z$yXW6P~OWsc_Xjng*=rzO0_MGL&8M9$rt$~1L@0Kc`YyHnLLrl^2mBHPQSIsCchp{ Nem$7{3QT^Te*!#7_n!a& literal 0 HcmV?d00001 diff --git a/travis/test/jmpxx-ox.bin16.t b/travis/test/jmpxx-ox.bin16.t new file mode 100644 index 0000000000000000000000000000000000000000..885b9d20b0d9380510389928673cc675f3231d25 GIT binary patch literal 1601 zcmc&yO-NNi7=4eKU5g9RrdBQ@S_nlTL_|b|P_&2^(IN`M#*hN3ha^cqazhs(Qeq?( zQV~L8KNv~$BUn;oK|c$L5cNrYpO1bB3G>~V+nE`Bmsb~|Rd2p?&YUx6-eTTsZ~woa zf=QMtXg^6*Fr~1xVI3C?XkHaZu|0&$NAs$9E{^@7+mu_*#%v514bK|IGr)JlUkpzh z{%m*(e$3!Dk2-$qcm&KZ3=bO~GCYXRLtw!0J;Qem-!j|_f5UaV9d|kIu=n0bel7W> zrOT@2~3Te8Z;f%RFBRf;Gm`hn)Ykjr)dxTF4x`Rc$?!b_TFhhCj=cAbWAA90ri3o z3#t=TE2sv3ufTiKZpS+vZwJ#>LDhmb3)+azdSI=fDnV-mtrAoTzruAZ94~Xc1e`O; zQaSA>iE^eCmNr2c#W`a+*{L8b#?S+NR$E35uY%4OeUqD$SVB+ zbr*Fft8Z~qBn6TuBV-sT9f?B>21ri&e%yNw)rUHr)h9UVB|W4Y2rgX|>R@WjnBZx`FdR&mXWAPA$?5C^kv zi8IW;ii;4FY6iR|CGsW{Mz3W)D?SsSic{hw#KDJd8JBEKEV`(`=j6!<8O9SMnGcDV z#0&6DCE=wiu~fQCr*4)$k?xi`U$GUdDhV#X^F1@4`(64(*_N#;C%F91_so3mcj*%) lTe7N@;PN})GxNFMrB5u_1*;YkTz=9Vh=B&$A{P}DQBW;xk(*jX5VUI5O>_fZ!npu1#Z4_DDEfeEVT)W; zkeEUpQ5T&>9`ZOg|EH}S5`yL#e(wwn!#h(d{qJa-(P{OE!(rQ~{A#^n&$sfh3QI5# zGcXNVNJA205E@GleCUD){kY?_KH&p8@D2@lfk$|N3f#gKoWThkLD}N*p1)+*HtB7{ zCKO;D)?gVHU>0&P1(PrVaTp9N0i0=HoLh=!bTaOj z{fMIZspISpY?m2#U+&2rxg`rSFIVKEoRc}3l_{B!CgjdQrfk<4HzAF~I*`8X$TwM+ j&$22j@= 0171 && $bc <= 0173) { $skip = 1; } elsif (($bc & ~3) == 0260 || $bc == 0270) { # VEX $skip = 2; } elsif (($bc & ~3) == 0240 || $bc == 0250) { # EVEX $skip = 4; + } elsif (($bc & ~3) == 0304) { + $skip = 2; } elsif ($bc == 0330) { $skip = 1; } diff --git a/x86/preinsns.pl b/x86/preinsns.pl index 1c7a8ad2..46c626a5 100755 --- a/x86/preinsns.pl +++ b/x86/preinsns.pl @@ -152,7 +152,7 @@ sub func_multisize($$$) { $ins = $o.$ins; $o = ''; - while ($ins =~ /^(.*?)((?:\b[0-9a-f]{2}(?:\+r)?|\bsbyte|\bimm|\bsel|\bopt\w?|\b[ioa]d?|\b(?:reg_)?[abcd]x|\bk?reg|\bk?rm|\bw)?\#{1,2}|\b(?:reg|rm)64\b|\b(?:o64)?nw\b|\b(?:NO)?LONG\w+\b|\%{1,2})(.*)$/) { + while ($ins =~ /^(.*?)((?:\b[0-9a-f]{2}(?:\+r)?|\bsbyte|\bimm|\bsel|\bopt\w?|\b[ioa]d?|\b(?:reg_)?[abcd]x|\bk?reg|\bk?rm|\bw|\bS\b)?\#{1,2}|\b(?:reg|rm)64\b|\b(?:o64)?nw\b|\b(?:NO)?LONG\w+\b|\%{1,2}|[ABCD]X\#)(.*)$/) { $o .= $1; my $mw = $2; $ins = $3; @@ -178,15 +178,17 @@ sub func_multisize($$$) { $o .= !$i ? 'iwd' : ($s >= 64) ? 'id,s' : "i$sn"; } elsif ($mw eq 'i##') { $o .= !$i ? 'iwdq' : "i$sn"; - } elsif ($mw =~ /^(?:reg_)?([abcd])x\#$/) { + } elsif ($mw =~ /^(?:reg_)?([abcd])x\#$/i) { + my $rl = $1; + my $upr = ($rl =~ /^[A-Z]/); if ($i == 1) { - $o .= "reg_${1}l"; + $o .= $upr ? "${rl}L" : "reg_${rl}l"; } elsif ($i == 2) { - $o .= "reg_${1}x"; + $o .= $upr ? "${rl}X" : "reg_${rl}x"; } elsif ($i == 3) { - $o .= "reg_e${1}x"; + $o .= $upr ? "E${rl}X" : "reg_e${rl}x"; } elsif ($i == 4) { - $o .= "reg_r${1}x"; + $o .= $upr ? "R${rl}X" : "reg_r${rl}x"; $long |= 1; } else { die "$0:$infile:$line: register cannot be used with z\n"; @@ -237,6 +239,8 @@ sub func_multisize($$$) { } } elsif ($mw eq 'w##') { $o .= 'w'.(($i-1) & 1); + } elsif ($mw eq 'S#') { + $o .= 'S' } elsif ($mw eq '#') { $o .= $s; } else { @@ -260,6 +264,39 @@ sub func_multisize($$$) { return @ol; } +# Near branch operand size patterns +# This allows the "normal" size patterns to be used for +# address size features, as used by JCXZ and LOOP. +# This also allows the syntax "jmp dword foo" in 64-bit +# mode, even though it is really bogus. +$macros{'br'} = { + 'func' => + sub { + my($mac, $args, $rawargs) = @_; + my @ol; + my $ins = join(' ', @$rawargs); + + foreach my $wx ([16,16], [32,32], [64,64], [64,32]) { + my($w,$iw,$sz) = @$wx; + my $i = $ins; + my $argn; + if ($i =~ /^(.*)\b(near|short)\b/) { + my $what = $2; + next if ($what eq 'short' && $iw != $w); + (my $argn = $1) =~ s/[^,:]+//g; + $argn = 'AR'.length($argn); + } + $i =~ s/\b(near|short)\b/imm$iw|$1/; + $i =~ s/\bos\b/nw o$w/; + $i .= ",$argn"; + $i .= ($iw != $w) ? ',SX,ND' : ',OSIZE'; + $i .= ($w == 64) ? ',LONG' : ',NOLONG'; + push(@ol, $i); + } + return(@ol); + } +}; + # Common pattern for K-register instructions $macros{'k'} = { 'func' =>