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

Disassembly:
mov qword [rsp + 8], rcx
sub rsp, 0x38
mov rax, qword [rsp + 0x40]
cmp dword [rax + 8], 0x270
jl 0x18000179d
mov rax, qword [rsp + 0x40]
cmp dword [rax + 8], 0x271
jne 0x1800015e8
mov edx, 0x1571
mov rcx, qword [rsp + 0x40]
call fcn.180001180
mov dword [rsp + 0x24], 0
jmp 0x1800015fc
mov eax, dword [rsp + 0x24]
inc eax
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x24], 0xe3
jge 0x18000167f
movsxd rax, dword [rsp + 0x24]
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx]
mov eax, dword [rcx + rax*4]
and eax, 0x80000000
mov ecx, dword [rsp + 0x24]
inc ecx
movsxd rcx, ecx
mov rdx, qword [rsp + 0x40]
mov rdx, qword [rdx]
mov ecx, dword [rdx + rcx*4]
btr ecx, 0x1f
or eax, ecx
mov dword [rsp + 0x20], eax
mov eax, dword [rsp + 0x24]
add eax, 0x18d
cdqe
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx]
mov edx, dword [rsp + 0x20]
shr edx, 1
mov eax, dword [rcx + rax*4]
xor eax, edx
mov ecx, dword [rsp + 0x20]
and ecx, 1
mov ecx, ecx
lea rdx, [0x18002b9f0]
xor eax, dword [rdx + rcx*4]
movsxd rcx, dword [rsp + 0x24]
mov rdx, qword [rsp + 0x40]
mov rdx, qword [rdx]
mov dword [rdx + rcx*4], eax
jmp 0x1800015f2
jmp 0x18000168b
mov eax, dword [rsp + 0x24]
inc eax
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x24], 0x26f
jge 0x18000170e
movsxd rax, dword [rsp + 0x24]
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx]
mov eax, dword [rcx + rax*4]
and eax, 0x80000000
mov ecx, dword [rsp + 0x24]
inc ecx
movsxd rcx, ecx
mov rdx, qword [rsp + 0x40]
mov rdx, qword [rdx]
mov ecx, dword [rdx + rcx*4]
btr ecx, 0x1f
or eax, ecx
mov dword [rsp + 0x20], eax
mov eax, dword [rsp + 0x24]
sub eax, 0xe3
cdqe
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx]
mov edx, dword [rsp + 0x20]
shr edx, 1
mov eax, dword [rcx + rax*4]
xor eax, edx
mov ecx, dword [rsp + 0x20]
and ecx, 1
mov ecx, ecx
lea rdx, [0x18002b9f0]
xor eax, dword [rdx + rcx*4]
movsxd rcx, dword [rsp + 0x24]
mov rdx, qword [rsp + 0x40]
mov rdx, qword [rdx]
mov dword [rdx + rcx*4], eax
jmp 0x180001681
mov eax, 4
imul rax, rax, 0x26f
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx]
mov eax, dword [rcx + rax]
and eax, 0x80000000
mov ecx, 4
imul rcx, rcx, 0
mov rdx, qword [rsp + 0x40]
mov rdx, qword [rdx]
mov ecx, dword [rdx + rcx]
btr ecx, 0x1f
or eax, ecx
mov dword [rsp + 0x20], eax
mov eax, 4
imul rax, rax, 0x18c
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx]
mov edx, dword [rsp + 0x20]
shr edx, 1
mov eax, dword [rcx + rax]
xor eax, edx
mov ecx, dword [rsp + 0x20]
and ecx, 1
mov ecx, ecx
lea rdx, [0x18002b9f0]
xor eax, dword [rdx + rcx*4]
mov ecx, 4
imul rcx, rcx, 0x26f
mov rdx, qword [rsp + 0x40]
mov rdx, qword [rdx]
mov dword [rcx + rdx], eax
mov rax, qword [rsp + 0x40]
mov dword [rax + 8], 0
mov rax, qword [rsp + 0x40]
movsxd rax, dword [rax + 8]
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx]
mov eax, dword [rcx + rax*4]
mov dword [rsp + 0x20], eax
mov rax, qword [rsp + 0x40]
mov eax, dword [rax + 8]
inc eax
mov rcx, qword [rsp + 0x40]
mov dword [rcx + 8], eax
mov eax, dword [rsp + 0x20]
shr eax, 0xb
mov ecx, dword [rsp + 0x20]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x20], eax
mov eax, dword [rsp + 0x20]
shl eax, 7
and eax, 0x9d2c5680
mov ecx, dword [rsp + 0x20]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x20], eax
mov eax, dword [rsp + 0x20]
shl eax, 0xf
and eax, 0xefc60000
mov ecx, dword [rsp + 0x20]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x20], eax
mov eax, dword [rsp + 0x20]
shr eax, 0x12
mov ecx, dword [rsp + 0x20]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x20], eax
mov eax, dword [rsp + 0x20]
add rsp, 0x38
ret