Function at 0x180036f10
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
sub rsp, 0x38
movdqa xmmword [rsp + 0x20], xmm8
movdqa xmmword [rsp + 0x10], xmm7
movdqa xmmword [rsp], xmm6
mov eax, dword [rcx]
cmp eax, 0x270
jne 0x180036fbc
movd xmm0, dword [rcx + 4]
pshufd xmm3, xmm0, 0
mov rax, 0xfffffffffffffd90
movaps xmm0, xmmword [0x18005e7c0]
movaps xmm1, xmmword [0x18005e7d0]
movdqa xmm2, xmmword [0x18005e7e0]
nop word [rax + rax]
movups xmm4, xmmword [rcx + rax*4 + 0x9c8]
shufps xmm3, xmm4, 3
shufps xmm3, xmm4, 0x98
andps xmm3, xmm0
movaps xmm5, xmm4
andps xmm5, xmm1
orps xmm5, xmm3
psrld xmm5, 1
movaps xmm3, xmm4
pslld xmm4, 0x1f
psrad xmm4, 0x1f
pand xmm4, xmm2
movdqu xmm6, xmmword [rcx + rax*4 + 0xff8]
pxor xmm6, xmm4
pxor xmm6, xmm5
movdqu xmmword [rcx + rax*4 + 0x1384], xmm6
add rax, 4
jne 0x180036f60
mov eax, 0x270
jmp 0x1800371ef
cmp eax, 0x4e0
jb 0x1800371ef
movd xmm0, dword [rcx + 0x9c4]
pshufd xmm3, xmm0, 0
xor eax, eax
movaps xmm0, xmmword [0x18005e7c0]
movaps xmm1, xmmword [0x18005e7d0]
movdqa xmm2, xmmword [0x18005e7e0]
nop dword [rax]
movups xmm4, xmmword [rcx + rax*4 + 0x9c8]
shufps xmm3, xmm4, 3
shufps xmm3, xmm4, 0x98
andps xmm3, xmm0
movaps xmm5, xmm4
andps xmm5, xmm1
orps xmm5, xmm3
movups xmm3, xmmword [rcx + rax*4 + 0x9d8]
movaps xmm6, xmm4
shufps xmm6, xmm3, 3
shufps xmm6, xmm3, 0x98
andps xmm6, xmm0
movaps xmm7, xmm3
andps xmm7, xmm1
orps xmm7, xmm6
psrld xmm5, 1
psrld xmm7, 1
pslld xmm4, 0x1f
psrad xmm4, 0x1f
pand xmm4, xmm2
movaps xmm6, xmm3
pslld xmm6, 0x1f
psrad xmm6, 0x1f
pand xmm6, xmm2
movdqu xmm8, xmmword [rcx + rax*4 + 0xff8]
pxor xmm8, xmm4
pxor xmm8, xmm5
movdqu xmm4, xmmword [rcx + rax*4 + 0x1008]
pxor xmm4, xmm6
pxor xmm4, xmm7
movdqu xmmword [rcx + rax*4 + 4], xmm8
movdqu xmmword [rcx + rax*4 + 0x14], xmm4
add rax, 8
cmp rax, 0xe0
jne 0x180036ff0
pshufd xmm3, xmm3, 0xff
movd edx, xmm3
and edx, 0x80000000
mov r8d, dword [rcx + 0xd48]
mov eax, dword [rcx + 0xd4c]
mov r9d, r8d
and r9d, 0x7ffffffe
or r9d, edx
mov edx, r8d
and edx, 1
neg edx
and edx, 0x9908b0df
xor edx, dword [rcx + 0x1378]
shr r9d, 1
xor edx, r9d
mov dword [rcx + 0x384], edx
and r8d, 0x80000000
mov edx, eax
and edx, 0x7ffffffe
or edx, r8d
shr edx, 1
mov r8d, eax
and r8d, 1
neg r8d
and r8d, 0x9908b0df
xor r8d, dword [rcx + 0x137c]
xor r8d, edx
mov dword [rcx + 0x388], r8d
and eax, 0x80000000
mov edx, dword [rcx + 0xd50]
mov r8d, edx
and r8d, 0x7ffffffe
or r8d, eax
shr r8d, 1
movd xmm3, edx
and edx, 1
neg edx
and edx, 0x9908b0df
xor edx, dword [rcx + 0x1380]
xor edx, r8d
mov dword [rcx + 0x38c], edx
pshufd xmm3, xmm3, 0
xor eax, eax
nop word cs:[rax + rax]
movups xmm4, xmmword [rcx + rax*4 + 0xd54]
shufps xmm3, xmm4, 3
shufps xmm3, xmm4, 0x98
andps xmm3, xmm0
movaps xmm5, xmm4
andps xmm5, xmm1
orps xmm5, xmm3
psrld xmm5, 1
movaps xmm3, xmm4
pslld xmm4, 0x1f
psrad xmm4, 0x1f
pand xmm4, xmm2
movdqu xmm6, xmmword [rcx + rax*4 + 4]
pxor xmm6, xmm4
pxor xmm6, xmm5
movdqu xmmword [rcx + rax*4 + 0x390], xmm6
add rax, 4
cmp rax, 0x18c
jne 0x180037160
mov eax, 0x80000000
and eax, dword [rcx + 0x1380]
mov edx, dword [rcx + 4]
mov r8d, edx
and r8d, 0x7ffffffe
or r8d, eax
and edx, 1
neg edx
and edx, 0x9908b0df
xor edx, dword [rcx + 0x634]
shr r8d, 1
xor edx, r8d
mov dword [rcx + 0x9c0], edx
xor eax, eax
lea edx, [rax + 1]
mov dword [rcx], edx
mov eax, eax
mov eax, dword [rcx + rax*4 + 4]
mov edx, eax
shr edx, 0xb
and edx, dword [rcx + 0x1384]
xor edx, eax
mov eax, edx
shl eax, 7
and eax, 0x9d2c5680
xor eax, edx
mov ecx, eax
shl ecx, 0xf
and ecx, 0xefc60000
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor eax, ecx
movaps xmm6, xmmword [rsp]
movaps xmm7, xmmword [rsp + 0x10]
movaps xmm8, xmmword [rsp + 0x20]
add rsp, 0x38
ret