format ELF executable entry _start segment readable executable _start: mov eax, dword ptr esp + 8 mov dword ptr msg, eax cmp dword ptr msg, 00h je error push 3Eh xor ebx, ebx mov ecx, dword ptr msg start: mov bl, byte ptr ecx cmp bl, 41h jl skip cmp bl, 7Bh jge skip cmp bl, 61h jge lower cmp bl, 5Bh jge skip sub bl, 65 jmp over lower: sub bl, 61h over: mov dl, byte ptr ROT13 + ebx mov byte ptr ecx, dl skip: inc ecx cmp byte ptr ecx, 00h jne start mov byte ptr ecx, 0Ah inc ecx mov eax, 4 mov ebx, 1 mov edx, ecx mov ecx, dword ptr msg sub edx, dword ptr msg int 80h mov eax, 1 xor ebx, ebx jmp done error: mov eax, 4 mov ebx, 1 mov ecx, errmsg mov edx, 10 int 80h mov eax, 1 mov ebx, -1 done: int 80h segment readable writeable msg: dd 00h errmsg: db "No input!", 0Ah, 00h ROT13: db "NOPQRSTUVWXYZABCDEFGHIJKLM"