BITS 64 ; ; - variable adjust start-off and add off to xor ; ; lea rsi, [rel start-0x6f] ; xor dword [byte rsi+(payload-start)+0x6f], ebx ; ; - register substitution with ebx ; - register substitution with rsi & add xchg rsi, reg ; - re-ordering of mov and lea ; start: mov ebx, 0x12345678 lea rsi, [rel start] loop: xor dword [byte rsi+(payload-start)], ebx lodsd payload: add ebx, eax ; ebx + eax = 0 is the end marker jnz loop