section .text global _start print: mov rax,4 mov rbx,1 int 0x80 ret writeln: call print call nlprint ret nlprint: mov rdx,lennl mov rcx,nl call print ret exit: mov rax,1 mov rbx,0 int 0x80 _start: ; First loop xor rsi,rsi xor rdi,rdi mov rcx,len mov rax,[mask] _fl: shl rax,1 jnc _fle cmp [msg+rsi], byte 'A' jl _fle cmp [msg+rsi], byte 'Z' jg _fle mov bl,[msg+rsi] mov [result1+rdi],bl inc rdi _fle: inc rsi loop _fl mov rdx,rdi mov rcx,result1 call writeln ; Second loop xor rdi,rdi mov rsi,len-1 mov rcx,len _sl: mov al, [msg+rsi] cmp al, 'R' jne _sla cmp rsi,0 jz _sla cmp [msg+rsi-1], byte 'U' jne _sla jmp _slb _sla: mov [result2+rdi], al inc rdi _sle: dec rsi loop _sl _slb: mov rdx,rdi mov rcx,result2 call writeln call exit section .bss result1 resb 64 result2 resb 64 section .data msg db 'Rw,EGH8URh9awhG(AWHg97ahgw98agh(*AWGHJ89awghjwaURjwWarrfafwakfeA' len equ $ - msg nl db 0xa lennl equ $ - nl mask dq 0000000110000010001000000000000001111100000000011000000000000001b