[BITS 64] global _start _start: sub rsp, 0x100 mov qword [rsp], 16 lea rdx, [rsp] lea rsi, [rsp+8] mov rdi, 3 mov rax, 43 syscall mov rbp, rax mov rdi, 4 call write_marker ; set_filename mov rdx, 9 mov rsi, rsp mov rdi, rbp mov rax, 0 syscall call write_marker ; read_file mov rdx, 5 mov rsi, rsp mov rax, 0 syscall call write_marker ; set_xor_key mov rdx, 5 mov rsi, rsp mov rax, 0 syscall mov edx, [rsi+1] mov rsi, rsp mov rax, 0 syscall mov rdi, 4 mov rax, 1 syscall int3 write_marker: lea rsi, [rel marker] mov rdx, 4 mov rax, 1 syscall ret marker: db 0x0a,'OK',0x0a