Isn't ```c++ ( ( *p & 0xC0 ) != 0x80 ) )``` always going to be false because the if statement above needs it to be true in order to be entered and p is never moved in the intervening code.