if (((((uint32_t)bResult) + 1) >> 1) == 0)

同じ3演算だけど-1をロードしないだけ早いかも?
uint32_tがいいかどうかはよくわからない。