not dh ; sys_read count = edx = 65280
sub esp,edx ; allocate 65280 bytes on stack
mov al,3 ; 0x03 = "read" syscall
mov ecx,esp ; sys_read buf = ecx = stack pointer
int 0x80 ; eax = sys_read(stdin, esp, 65280)
add ecx,eax ; add read bytes to stack pointer
inc ebx ; sys_write fd = 1 = stdout
mov edx,ebx ; sys_write count = 1
reverse:
dec ecx ;
cmp ecx,esp ; check if we've gone too far
jl done ;
mov al,4 ; 0x04 = "write" syscall
int 0x80 ; eax = sys_write(stdout, ecx, 1)
jmp reverse
done:
bm90IGRoICAgICAgIDsgc3lzX3JlYWQgY291bnQgPSBlZHggPSA2NTI4MApzdWIgZXNwLGVkeCAgOyBhbGxvY2F0ZSA2NTI4MCBieXRlcyBvbiBzdGFjawoKbW92IGFsLDMgICAgIDsgMHgwMyA9ICJyZWFkIiBzeXNjYWxsCm1vdiBlY3gsZXNwICA7IHN5c19yZWFkIGJ1ZiA9IGVjeCA9IHN0YWNrIHBvaW50ZXIKaW50IDB4ODAgICAgIDsgZWF4ID0gc3lzX3JlYWQoc3RkaW4sIGVzcCwgNjUyODApCgphZGQgZWN4LGVheCAgOyBhZGQgcmVhZCBieXRlcyB0byBzdGFjayBwb2ludGVyCgppbmMgZWJ4ICAgICAgOyBzeXNfd3JpdGUgZmQgPSAxID0gc3Rkb3V0Cm1vdiBlZHgsZWJ4ICA7IHN5c193cml0ZSBjb3VudCA9IDEKCnJldmVyc2U6CmRlYyBlY3ggICAgICA7CmNtcCBlY3gsZXNwICA7IGNoZWNrIGlmIHdlJ3ZlIGdvbmUgdG9vIGZhcgpqbCBkb25lICAgICAgOwoKbW92IGFsLDQgICAgIDsgMHgwNCA9ICJ3cml0ZSIgc3lzY2FsbAppbnQgMHg4MCAgICAgOyBlYXggPSBzeXNfd3JpdGUoc3Rkb3V0LCBlY3gsIDEpCgpqbXAgcmV2ZXJzZQoKZG9uZTo=