;------------------------------------------
; v0 ← 乱数 0〜0xffffffff
;------------------------------------------
28732c: f0ffbd27 addiu sp,sp,-16
287330: 0000b0ff sd s0,0(sp)
287334: 2d808000 move s0,a0
287338: 0800bfff sd ra,8(sp)
28733c: c409028e lw v0,2500(s0)
287340: ffff4224 addiu v0,v0,-1
287344: 03004014 bnez v0,0x287354
287348: c40902ae sw v0,2500(s0)
;
28734c: 0b1d0a0c jal 0x28742c
287350: 00000000 nop
;
287354: c809028e lw v0,2504(s0)
287358: 2c9d043c lui a0,0x9d2c
28735c: 80568434 ori a0,a0,0x5680
287360: c6ef053c lui a1,0xefc6
287364: 04004324 addiu v1,v0,4
287368: 0000428c lw v0,0(v0)
28736c: c80903ae sw v1,2504(s0)
287370: c21a0200 srl v1,v0,0xb
287374: 0800bfdf ld ra,8(sp)
287378: 26104300 xor v0,v0,v1
28737c: 0000b0df ld s0,0(sp)
287380: c0190200 sll v1,v0,0x7
287384: 24186400 and v1,v1,a0
287388: 26104300 xor v0,v0,v1
28738c: c01b0200 sll v1,v0,0xf
287390: 24186500 and v1,v1,a1
287394: 26104300 xor v0,v0,v1
287398: 821c0200 srl v1,v0,0x12
28739c: 26104300 xor v0,v0,v1
2873a0: 0800e003 jr ra
2873a4: 1000bd27 addiu sp,sp,16
;------------------------------------------
; f0 ← 乱数 [0, f12]
;------------------------------------------
2873a8: f0ffbd27 addiu sp,sp,-16
2873ac: 0800b4e7 swc1 $f20,8(sp)
2873b0: 0000bfff sd ra,0(sp)
2873b4: cb1c0a0c jal 0x28732c ; v0 ← 乱数 0〜0xffffffff
2873b8: 06650046 mov.s $f20,$f12
2873bc: 2d204000 move a0,v0
2873c0: 788e80c7 lwc1 $f0,-29064(gp) ; f0: 4294967040.0 (0x4f7fffff)
2873c4: 42100400 srl v0,a0,0x1
2873c8: 01008330 andi v1,a0,0x1
2873cc: 00108044 mtc1 zero,$f2
...
2873d8: 43a00046 div.s $f1,$f20,$f0
2873dc: 05008004 bltz a0,0x2873f4
2873e0: 25186200 or v1,v1,v0 ; v1 = (a0 >>> 1) | (a0 & 1)
; a0 < 0x80000000
2873e4: 00008444 mtc1 a0,$f0
2873e8: 20008046 cvt.s.w $f0,$f0
2873ec: 05000010 b 0x287404
2873f0: 02000146 mul.s $f0,$f0,$f1
; a0 >= 0x80000000
2873f4: 00008344 mtc1 v1,$f0
2873f8: 20008046 cvt.s.w $f0,$f0
2873fc: 00000046 add.s $f0,$f0,$f0
287400: 02000146 mul.s $f0,$f0,$f1
287404: 34000246 c.lt.s $f0,$f2
287408: 01000345 bc1tl 0x287410
28740c: 06100046 mov.s $f0,$f2
287410: 34a00046 c.lt.s $f20,$f0
287414: 01000345 bc1tl 0x28741c
287418: 06a00046 mov.s $f0,$f20
28741c: 0000bfdf ld ra,0(sp)
287420: 0800b4c7 lwc1 $f20,8(sp)
287424: 0800e003 jr ra
287428: 1000bd27 addiu sp,sp,16