Function at 0x1800046b0
Capabilities:
Generate random numbers using a mersenne twister

Disassembly:
sub rsp, 0x58
cmp dword [0x18002b838], 0x270
jl 0x1800048cc
mov dword [rsp + 0x50], 0
cmp dword [rsp + 0x50], 0xe3
jge 0x18000477f
movsxd rcx, dword [rsp + 0x50]
lea rax, [0x18002c020]
mov eax, dword [rax + rcx*4]
and eax, 0x80000000
mov ecx, dword [rsp + 0x50]
add ecx, 1
movsxd rdx, ecx
lea rcx, [0x18002c020]
mov ecx, dword [rcx + rdx*4]
and ecx, 0x7fffffff
or eax, ecx
mov dword [rsp + 0x54], eax
mov eax, dword [rsp + 0x50]
sub eax, 0xaa7c9617
add eax, 0x18d
mov dword [rsp + 0x4c], eax
mov ecx, 0xc1c7b5aa
call fcn.180013910
mov ecx, dword [rsp + 0x4c]
mov edx, eax
call fcn.180015590
movsxd rcx, eax
lea rax, [0x18002c020]
mov edx, dword [rax + rcx*4]
mov eax, dword [rsp + 0x54]
shr eax, 1
xor edx, eax
mov eax, dword [rsp + 0x54]
and eax, 1
mov eax, eax
mov ecx, eax
lea rax, [0x18002a26c]
xor edx, dword [rax + rcx*4]
movsxd rcx, dword [rsp + 0x50]
lea rax, [0x18002c020]
mov dword [rax + rcx*4], edx
mov eax, dword [rsp + 0x50]
add eax, 1
mov dword [rsp + 0x50], eax
jmp 0x1800046cc
jmp 0x180004781
cmp dword [rsp + 0x50], 0x26f
jge 0x180004864
movsxd rcx, dword [rsp + 0x50]
lea rax, [0x18002c020]
mov eax, dword [rax + rcx*4]
and eax, 0x80000000
mov ecx, dword [rsp + 0x50]
add ecx, 1
movsxd rdx, ecx
lea rcx, [0x18002c020]
mov ecx, dword [rcx + rdx*4]
and ecx, 0x7fffffff
or eax, ecx
mov dword [rsp + 0x54], eax
mov ecx, dword [rsp + 0x50]
mov dword [rsp + 0x44], ecx
mov edx, 0x58152b84
call fcn.18000dcb0
mov ecx, eax
mov edx, 0xffffff1d
call fcn.180015590
mov ecx, dword [rsp + 0x44]
add eax, 0x58152b84
mov dword [rsp + 0x48], eax
mov edx, 0xffffff1d
call fcn.180015590
mov eax, dword [rsp + 0x48]
movsxd rcx, eax
lea rax, [0x18002c020]
mov edx, dword [rax + rcx*4]
mov eax, dword [rsp + 0x54]
shr eax, 1
xor edx, eax
mov eax, dword [rsp + 0x54]
and eax, 1
mov eax, eax
mov ecx, eax
lea rax, [0x18002a26c]
xor edx, dword [rax + rcx*4]
movsxd rcx, dword [rsp + 0x50]
lea rax, [0x18002c020]
mov dword [rax + rcx*4], edx
mov ecx, dword [rsp + 0x50]
xor edx, edx
sub edx, ecx
xor eax, eax
sub eax, 1
add edx, eax
xor eax, eax
sub eax, edx
mov dword [rsp + 0x40], eax
mov edx, 1
call fcn.180015590
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x50], eax
jmp 0x180004781
mov eax, dword [0x18002c9dc]
mov dword [rsp + 0x3c], eax
mov ecx, 0xebbb23bd
call fcn.180013910
mov ecx, dword [rsp + 0x3c]
and ecx, eax
mov edx, dword [0x18002c020]
and edx, 0x7fffffff
call fcn.1800115a0
mov dword [rsp + 0x54], eax
mov ecx, dword [0x18002c650]
mov eax, dword [rsp + 0x54]
shr eax, 1
xor ecx, eax
mov eax, dword [rsp + 0x54]
and eax, 1
mov eax, eax
mov edx, eax
lea rax, [0x18002a26c]
mov edx, dword [rax + rdx*4]
call fcn.1800080e0
mov dword [0x18002c9dc], eax
mov dword [0x18002b838], 0
mov eax, dword [0x18002b838]
mov dword [rsp + 0x24], eax
xor ecx, ecx
sub ecx, 1
sub eax, ecx
mov dword [rsp + 0x20], eax
mov ecx, 0x6bbb23bc
call fcn.180013910
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x24]
mov dword [0x18002b838], ecx
movsxd rcx, eax
lea rax, [0x18002c020]
mov eax, dword [rax + rcx*4]
mov dword [rsp + 0x54], eax
mov eax, dword [rsp + 0x54]
shr eax, 0xb
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x2c], eax
xor eax, 0xffffffff
mov dword [rsp + 0x28], eax
mov ecx, 0x7ecb0052
call fcn.180013910
mov edx, dword [rsp + 0x28]
mov ecx, eax
call fcn.180001940
mov r8d, dword [rsp + 0x2c]
mov edx, dword [rsp + 0x30]
mov r9d, 0xffffffff
xor r9d, 0x157023ef
and r8d, r9d
mov ecx, edx
xor ecx, 0xffffffff
and ecx, 0x157023ef
and edx, r9d
or eax, r8d
or ecx, edx
xor eax, ecx
mov dword [rsp + 0x54], eax
mov eax, dword [rsp + 0x54]
shl eax, 7
mov dword [rsp + 0x34], eax
mov ecx, 0xf697753d
call fcn.180013910
mov ecx, dword [rsp + 0x34]
mov edx, eax
xor edx, 0xffffffff
mov eax, ecx
xor eax, edx
and eax, ecx
mov dword [rsp + 0x38], eax
mov edx, 0x9d2c5680
call fcn.180001940
mov eax, dword [rsp + 0x38]
xor eax, dword [rsp + 0x54]
mov dword [rsp + 0x54], eax
mov edx, dword [rsp + 0x54]
shl edx, 0xf
and edx, 0xefc60000
mov ecx, dword [rsp + 0x54]
call fcn.1800080e0
mov dword [rsp + 0x54], eax
mov edx, dword [rsp + 0x54]
shr edx, 0x12
mov ecx, dword [rsp + 0x54]
call fcn.1800080e0
mov dword [rsp + 0x54], eax
mov eax, dword [rsp + 0x54]
add rsp, 0x58
ret