I’ve been trying to parse them for a couple days, and I can’t quite grok it. Here they are:
int left = S->buflen >> 3;
int fill = 64 - left;
if(left && (((datalen >> 3) & 0x3F) >= (unsigned)fill)){
some code here
}
If it helps, this is in the reference implementation of the SHA-3 candidate BLAKE256.
An alternative without bitops might help clear up the meaning:
This of course assumes that
buflenanddatalenare nonnegative, since the right shift operator has platform-dependent behavior for negative numbers.