This doesn't make sense.  al and bl are pointers and they're inverted, so they really can't ever be negative.