;
; state の更新
;
80089DF0 3C045D58 mov r4,5D580000h
80089DF4 3C03800D mov r3,800D0000h
80089DF8 8C62A418 mov r2,[r3-5BE8h]
80089DFC 34848B65 or r4,8B65h
80089E00 00440018 smul r2,r4
80089E04 00002812 mov r5,lo
80089E08 24A20001 add r2,r5,1h
80089E0C AC62A418 mov [r3-5BE8h],r2 ; r2 ← (r2 * 0x5d588b65 + 1) & 0xffffffff
80089E10 03E00008 ret
80089E14 00021402 + shr r2,10h
;
; 乱数 0〜(r4-1) を返す
;
80089E18 27BDFFE8 push r16,ra,wasted
80089E24 0C02277C call 80089DF0h
80089E28 00808021 + mov r16,r4
80089E2C 16000003 jnz r16,80089E3Ch
80089E34 0802279A jmp 80089E68h
80089E38 00001021 + mov r2,0
80089E3C 0050001A sdiv r2,r16
80089E40 16000002 jnz r16,80089E4Ch
80089E48 0007000D break 1C00h
80089E4C 2401FFFF mov r1,-1h
80089E50 16010004 jne r16,r1,80089E64h
80089E54 3C018000 + mov r1,80000000h
80089E58 14410002 jne r2,r1,80089E64h
80089E60 0006000D break 1800h
80089E64 00001010 mov r2,hi
80089E68 8FBF0014 mov ra,[sp+14h]
80089E6C 8FB00010 mov r16,[sp+10h]
80089E70 03E00008 ret
80089E74 27BD0018 + add sp,18h