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

Disassembly:
push edi
push esi
mov eax, dword [ecx]
cmp eax, 0x270
jne 0x10089ddb
movd xmm0, dword [ecx + 4]
pshufd xmm4, xmm0, 0
mov eax, 0xfffffd90
movaps xmm0, xmmword [0x103985f0]
movaps xmm1, xmmword [0x1048beb0]
movdqa xmm2, xmmword [0x1048bec0]
nop word cs:[eax + eax]
movups xmm3, xmmword [ecx + eax*4 + 0x9c8]
shufps xmm4, xmm3, 3
shufps xmm4, xmm3, 0x98
andps xmm4, xmm0
movaps xmm5, xmm3
andps xmm5, xmm1
orps xmm5, xmm4
psrld xmm5, 1
movaps xmm4, xmm3
pslld xmm3, 0x1f
psrad xmm3, 0x1f
pand xmm3, xmm2
movdqu xmm6, xmmword [ecx + eax*4 + 0xff8]
pxor xmm6, xmm3
pxor xmm6, xmm5
movdqu xmmword [ecx + eax*4 + 0x1384], xmm6
add eax, 4
jne 0x10089d80
mov eax, 0x270
jmp 0x10089fe7
cmp eax, 0x4e0
jb 0x10089fe7
movd xmm0, dword [ecx + 0x9c4]
pshufd xmm3, xmm0, 0
xor eax, eax
movaps xmm0, xmmword [0x103985f0]
movaps xmm1, xmmword [0x1048beb0]
movdqa xmm2, xmmword [0x1048bec0]
nop dword [eax + eax]
movups xmm4, xmmword [ecx + eax*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 [ecx + eax*4 + 0x9d8]
movaps xmm7, xmm4
shufps xmm7, xmm3, 3
shufps xmm7, xmm3, 0x98
andps xmm7, xmm0
movaps xmm6, xmm3
andps xmm6, xmm1
orps xmm6, xmm7
psrld xmm5, 1
pslld xmm4, 0x1f
psrad xmm4, 0x1f
pand xmm4, xmm2
movdqu xmm7, xmmword [ecx + eax*4 + 0xff8]
pxor xmm7, xmm4
movaps xmm4, xmm3
pslld xmm4, 0x1f
psrad xmm4, 0x1f
pand xmm4, xmm2
pxor xmm7, xmm5
movdqu xmm5, xmmword [ecx + eax*4 + 0x1008]
pxor xmm5, xmm4
psrld xmm6, 1
pxor xmm5, xmm6
movdqu xmmword [ecx + eax*4 + 4], xmm7
movdqu xmmword [ecx + eax*4 + 0x14], xmm5
add eax, 8
cmp eax, 0xe0
jne 0x10089e10
pshufd xmm3, xmm3, 0xff
movd edi, xmm3
and edi, 0x80000000
mov edx, dword [ecx + 0xd48]
mov eax, dword [ecx + 0xd4c]
mov esi, edx
and esi, 0x7ffffffe
or esi, edi
mov edi, edx
and edi, 1
neg edi
and edi, 0x9908b0df
xor edi, dword [ecx + 0x1378]
shr esi, 1
xor edi, esi
mov dword [ecx + 0x384], edi
and edx, 0x80000000
mov esi, eax
and esi, 0x7ffffffe
or esi, edx
shr esi, 1
mov edx, eax
and edx, 1
neg edx
and edx, 0x9908b0df
xor edx, dword [ecx + 0x137c]
xor edx, esi
mov dword [ecx + 0x388], edx
and eax, 0x80000000
mov edx, dword [ecx + 0xd50]
mov esi, edx
and esi, 0x7ffffffe
or esi, eax
shr esi, 1
movd xmm3, edx
and edx, 1
neg edx
and edx, 0x9908b0df
xor edx, dword [ecx + 0x1380]
xor edx, esi
mov dword [ecx + 0x38c], edx
pshufd xmm5, xmm3, 0
xor eax, eax
nop word [eax + eax]
movups xmm3, xmmword [ecx + eax*4 + 0xd54]
shufps xmm5, xmm3, 3
shufps xmm5, xmm3, 0x98
andps xmm5, xmm0
movaps xmm4, xmm3
andps xmm4, xmm1
orps xmm4, xmm5
psrld xmm4, 1
movaps xmm5, xmm3
pslld xmm3, 0x1f
psrad xmm3, 0x1f
pand xmm3, xmm2
movdqu xmm6, xmmword [ecx + eax*4 + 4]
pxor xmm6, xmm3
pxor xmm6, xmm4
movdqu xmmword [ecx + eax*4 + 0x390], xmm6
add eax, 4
cmp eax, 0x18c
jne 0x10089f60
mov edx, 0x80000000
and edx, dword [ecx + 0x1380]
mov eax, dword [ecx + 4]
mov esi, eax
and esi, 0x7ffffffe
or esi, edx
and eax, 1
neg eax
and eax, 0x9908b0df
xor eax, dword [ecx + 0x634]
shr esi, 1
xor eax, esi
mov dword [ecx + 0x9c0], eax
xor eax, eax
lea edx, [eax + 1]
mov dword [ecx], edx
mov eax, dword [ecx + eax*4 + 4]
mov edx, eax
shr edx, 0xb
and edx, dword [ecx + 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
pop esi
pop edi
ret