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

Disassembly:
sub rsp, 0x18
vmovdqa xmmword [rsp], xmm6
mov eax, dword [rcx]
cmp eax, 0x138
jne 0x180002b8e
vpbroadcastq ymm4, qword [rcx + 8]
vpbroadcastq ymm0, qword [0x18002a028]
vpbroadcastq ymm1, qword [0x18002a030]
mov rax, 0xfffffffffffffec8
vpxor xmm2, xmm2, xmm2
vpbroadcastq ymm3, qword [0x18002a038]
nop word cs:[rax + rax]
vmovdqu ymm5, ymmword [rcx + rax*8 + 0x9d0]
vpblendd ymm4, ymm5, ymm4, 0xc0
vpermq ymm4, ymm4, 0x93
vpand ymm4, ymm4, ymm0
vpand ymm6, ymm5, ymm1
vpor ymm4, ymm6, ymm4
vpsrlq ymm4, ymm4, 1
vpsllq ymm6, ymm5, 0x3f
vpcmpgtq ymm6, ymm2, ymm6
vpand ymm6, ymm6, ymm3
vpxor ymm6, ymm6, ymmword [rcx + rax*8 + 0xea8]
vpxor ymm4, ymm6, ymm4
vmovdqu ymmword [rcx + rax*8 + 0x1388], ymm4
vmovdqa ymm4, ymm5
add rax, 4
jne 0x180002b30
mov eax, 0x138
jmp 0x180002d97
cmp eax, 0x270
jb 0x180002d97
vpbroadcastq ymm4, qword [rcx + 0x9c8]
vpbroadcastq ymm0, qword [0x18002a028]
vpbroadcastq ymm1, qword [0x18002a030]
mov rax, 0xffffffffffffff64
vpxor xmm3, xmm3, xmm3
vpbroadcastq ymm2, qword [0x18002a038]
nop dword [rax + rax]
vmovdqu ymm5, ymmword [rcx + rax*8 + 0xeb0]
vpblendd ymm4, ymm5, ymm4, 0xc0
vpermq ymm4, ymm4, 0x93
vpand ymm4, ymm4, ymm0
vpand ymm6, ymm5, ymm1
vpor ymm4, ymm6, ymm4
vpsrlq ymm4, ymm4, 1
vpsllq ymm6, ymm5, 0x3f
vpcmpgtq ymm6, ymm3, ymm6
vpand ymm6, ymm6, ymm2
vpxor ymm6, ymm6, ymmword [rcx + rax*8 + 0x1388]
vpxor ymm4, ymm6, ymm4
vmovdqu ymmword [rcx + rax*8 + 0x4e8], ymm4
vmovdqa ymm4, ymm5
add rax, 4
jne 0x180002bd0
vpbroadcastq ymm3, qword [rcx + 0xea8]
xor eax, eax
vpxor xmm4, xmm4, xmm4
nop word cs:[rax + rax]
vmovdqa ymm5, ymm3
vmovdqu ymm3, ymmword [rcx + rax*8 + 0xeb0]
vpblendd ymm5, ymm3, ymm5, 0xc0
vpermq ymm5, ymm5, 0x93
vpand ymm5, ymm5, ymm0
vpand ymm6, ymm3, ymm1
vpor ymm5, ymm6, ymm5
vpsrlq ymm5, ymm5, 1
vpsllq ymm6, ymm3, 0x3f
vpcmpgtq ymm6, ymm4, ymm6
vpand ymm6, ymm6, ymm2
vpxor ymm6, ymm6, ymmword [rcx + rax*8 + 8]
vpxor ymm5, ymm6, ymm5
vmovdqu ymmword [rcx + rax*8 + 0x4e8], ymm5
add rax, 4
cmp rax, 0x98
jne 0x180002c40
vextracti128 xmm0, ymm3, 1
vpextrq rax, xmm0, 1
and rax, 0xffffffff80000000
mov rdx, qword [rcx + 0x1370]
mov r8d, edx
and r8d, 0x7ffffffe
or r8, rax
shr r8, 1
mov r9d, edx
and r9d, 1
neg r9
movabs rax, 0xb5026f5aa96619e9
and r9, rax
xor r9, qword [rcx + 0x4c8]
xor r9, r8
mov qword [rcx + 0x9a8], r9
and rdx, 0xffffffff80000000
mov r8, qword [rcx + 0x1378]
mov r9d, r8d
and r9d, 0x7ffffffe
or r9, rdx
shr r9, 1
mov edx, r8d
and edx, 1
neg rdx
and rdx, rax
xor rdx, qword [rcx + 0x4d0]
xor rdx, r9
mov qword [rcx + 0x9b0], rdx
and r8, 0xffffffff80000000
mov rdx, qword [rcx + 0x1380]
mov r9d, edx
and r9d, 0x7ffffffe
or r9, r8
shr r9, 1
mov r8d, edx
and r8d, 1
neg r8
and r8, rax
xor r8, qword [rcx + 0x4d8]
xor r8, r9
mov qword [rcx + 0x9b8], r8
and rdx, 0xffffffff80000000
mov r8, qword [rcx + 8]
mov r9d, r8d
and r9d, 0x7ffffffe
or r9, rdx
and r8d, 1
neg r8
and r8, rax
xor r8, qword [rcx + 0x4e0]
shr r9, 1
xor r8, r9
mov qword [rcx + 0x9c0], r8
xor eax, eax
lea edx, [rax + 1]
mov dword [rcx], edx
mov eax, eax
mov rax, qword [rcx + rax*8 + 8]
mov rdx, rax
shr rdx, 0x1d
and rdx, qword [rcx + 0x1388]
xor rdx, rax
mov rax, rdx
shl rax, 0x11
movabs rcx, 0x71d67fffeda60000
and rcx, rax
xor rcx, rdx
mov edx, ecx
and edx, 0x7ffbf77
shl rdx, 0x25
xor rdx, rcx
mov rax, rdx
shr rax, 0x2b
xor rax, rdx
vmovaps xmm6, xmmword [rsp]
add rsp, 0x18
vzeroupper
ret