ARTEAM EZINE ISSUE IV
As we go through the disassembled code properly, we can see that each character is being converted to uppercase by subtracting 0x20.
When we have reached the end of the string, we can find that it is doing another check by taking the first and last byte of the serial and store in edx and eax respectively. After that, it subtracts 0x3 from the last byte and check whether it’s the same as the first byte.
Handy Primer on Linux Reversing by Gunther
61