to expand on what Jochen said...
by using INC and SHR, we get to use only 1 branch instruction
INC reg32 is a single-byte instruction
SHR reg32,1 is a two-byte instruction
JNZ by a reverse distance of 128 bytes or less is 2 bytes
inc eax
shr eax,1
jnz MLoop0
5 bytes total
we want to exit the program if the returned value is either 0 or -1
for all other values, we want to loop