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

Disassembly:
mov eax, dword [ecx]
cmp eax, 0x270
jne 0x4026fb
movd xmm0, dword [ecx + 4]
pshufd xmm4, xmm0, 0
mov eax, 0xfffffd90
movaps xmm0, xmmword [0x40c060]
movaps xmm1, xmmword [0x40c070]
movdqa xmm2, xmmword [0x40c080]
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 0x4026a0
mov eax, 0x270
jmp 0x402909
cmp eax, 0x4e0
jb 0x402909
movd xmm0, dword [ecx + 0x9c4]
pshufd xmm3, xmm0, 0
xor eax, eax
movaps xmm0, xmmword [0x40c060]
movaps xmm1, xmmword [0x40c070]
movdqa xmm2, xmmword [0x40c080]
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 0x402730
push edi
push esi
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 dword [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 0x402880
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
pop esi
pop edi
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
ret