Function at 0x180002820
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 0x180002a0d
mov rax, qword [rsp + 0x40]
cmp dword [rax + 8], 0x271
jne 0x180002858
mov edx, 0x1571
mov rcx, qword [rsp + 0x40]
call fcn.1800023f0
mov dword [rsp + 0x24], 0
jmp 0x18000286c
mov eax, dword [rsp + 0x24]
inc eax
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x24], 0xe3
jge 0x1800028ef
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, [0x180023a80]
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 0x180002862
jmp 0x1800028fb
mov eax, dword [rsp + 0x24]
inc eax
mov dword [rsp + 0x24], eax
cmp dword [rsp + 0x24], 0x26f
jge 0x18000297e
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, [0x180023a80]
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 0x1800028f1
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, [0x180023a80]
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