Ok, next one. This time we focus on operators. In this case we need a screenshot instead of code only. Help me: what is this code doing? BTW: You can click at the image to enlarge!
[EXERCISE 0010] All are equal?
Published: November 23, 2009Posted in: The Binary Auditor™ Short Exercises

From my point of view they all are equal. No real data calculation is done, just logic test to determine which way to go before exiting. They all exit the program, no matter which way you go.
On the first box, a xor (logical exclusive or) is done, if the flag is zero goes to 40100B where an AND is done for ecx, if zero goes to the bottom box which exits the application. If the flag is not zero, goes to 401014 where another xor is done before exiting the program.
If the flag in the first/main box is not zero, goes to 401007 where a xor is done before exiting the application.
they are not equal, but then again, it will only ever go through 1 way (hence the green lines)
if you XOR eax by itself, you will ALWAYS get a 0, never anything different, it’s impossible.
so this will automatically make the zero flag set, which makes the JZ execute
then you get to mov ecx,1 then test ecx,ecx well a test is a lot like a cmp with itself, so if it’s true it will jump, as a test will return 0 if it’s true and set the zero flag
so you will end up with eax being 0 and ecx being 1 regardless of what parameters are pushed it seems