many windows API functions return zero or non-zero
OR EAX,EAX sets the zero flag is eax if zero, clears it if not
as a side effect, it always clears the carry flag, as do most logical operations (AND, OR, XOR)
and - the sign flag will be set to the same value as the high bit of the register
as for ".if eax" - if eax is non-zero or true