%imacro wllist 1.nolist global ..@wllist_%1?%[%%l] ..@wllist_%1?%[%%l]: %endmacro group group code init section code extern list mov si, list extern list.end mov di, list.end extern list.amount mov cx, list.amount loop: cs lodsw xchg bx, ax mov al, [cs:bx] cmp al, 90h jne bad mov byte [cs:bx], 0CCh loop loop good: int3 mov ax, 4C00h int 21h bad: int3 mov ax, 4CFFh int 21h align 16, int3 wllist g_ggroup_sinit wllist n_sinit_llist %ifndef NUMBER %assign NUMBER 256 %endif %rep NUMBER wllist llist nop %endrep section init align=16