0:R/X
 1:R/Y

 2:L/X
 3:J/9(最上位ビットが0の場合JUMP)
 4:L/Y
 5:J/9

 6:L/Z(6〜8で共に1の場合そのビットに1を書きこむ)
 7:A/o2
 8:T/Z

(9〜17の操作ではo2を右に1ビットシフトさせるために、左に7ビットシフトさせています)
(左に消えたら、右に出てくるようになっています)
 9:L/o2
10:A/o2
11:J/13
12:A/o1
13:T/o2
14:L/o3
15:B/o1
16:T/o3
17:J/9

(18〜23ではX、Yの値を左に1ビットシフトさせます)
18:L/X
19:S/1
20:T/X
21:L/Y
22:S/1
23:T/Y

(24〜25で右シフトのときに使ったループカウンタ(o3)を元に戻します)
24:L/o4
25:T/o3

(26〜28で全体のループカウンタである(o5)を更新します)
26:L/o5
27:B/o1
28:T/o5

29:J/o5(o5が0以上ならJUMP、負なら出力して終了)
30:W/Z
31J/0

 X:
 Y:
 Z:0000 0000
o1:0000 0001
o2:1000 0000
o3:0000 0110
o4:0000 0110
o5:0000 0111