12時でもう寝る時間じゃないかと思ったタイミングでバグ発見。
激しく簡単なミスだと思い込んで探ってたらやっぱりそうだった。

  d >> 1;

Sozobon C は代入演算子が無くてもコンパイルエラーにならないらしい。
これがどうコンパイルされるのか気になってアセンブラソース見てみたら、
「変数として割り当てられたレジスタに対する右ビットシフト」にならずに
「演算用一時レジスタに対する右ビットシフト」
になってた。