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

Disassembly:
mov ecx, dword [0x1003c0e0]
cmp ecx, 0x9bf
jbe 0x1001547c
push ebp
mov ebp, esp
push esi
cmp ecx, 0x9c0
je 0x10015268
xor ecx, ecx
mov eax, 0xfffff640
nop word cs:[eax + eax]
imul ecx, ecx, 0x7ff8a3ed
add ecx, 0x2aa01d31
imul edx, ecx, 0x7ff8a3ed
rol ecx, 0x10
xor ecx, 0x31415926
mov dword [eax + 0x1003d024], ecx
add edx, 0x2aa01d31
imul ecx, edx, 0x7ff8a3ed
rol edx, 0x10
xor edx, 0x31415926
add ecx, 0x2aa01d31
mov esi, ecx
rol esi, 0x10
mov dword [eax + 0x1003d028], edx
xor esi, 0x31415926
mov dword [eax + 0x1003d02c], esi
add eax, 0xc
jne 0x10015210
movd xmm0, dword [0x1003c664]
pshufd xmm4, xmm0, 0
mov eax, 0xfffffc80
movaps xmm0, xmmword [0x10036400]
movaps xmm1, xmmword [0x10036410]
movdqa xmm2, xmmword [0x10036420]
pop esi
pop ebp
nop word cs:[eax + eax]
movups xmm3, xmmword [eax + 0x1003c9e8]
shufps xmm4, xmm3, 3
shufps xmm4, xmm3, 0x98
andps xmm4, xmm0
movaps xmm6, xmm3
andps xmm6, xmm1
orps xmm6, xmm4
movups xmm4, xmmword [eax + 0x1003c9f8]
movaps xmm7, xmm3
shufps xmm7, xmm4, 3
shufps xmm7, xmm4, 0x98
andps xmm7, xmm0
movaps xmm5, xmm4
andps xmm5, xmm1
orps xmm5, xmm7
movdqu xmm7, xmmword [eax + 0x1003d018]
pslld xmm3, 0x1f
psrad xmm3, 0x1f
pand xmm3, xmm2
pxor xmm3, xmm7
movdqu xmm7, xmmword [eax + 0x1003d028]
psrld xmm6, 1
pxor xmm3, xmm6
movaps xmm6, xmm4
pslld xmm6, 0x1f
psrad xmm6, 0x1f
pand xmm6, xmm2
pxor xmm6, xmm7
psrld xmm5, 1
pxor xmm6, xmm5
movdqu xmmword [eax + 0x1003c9e4], xmm3
movdqu xmmword [eax + 0x1003c9f4], xmm6
add eax, 0x20
jne 0x100152a0
pshufd xmm3, xmm4, 0xff
movd edx, xmm3
and edx, 0x80000000
mov eax, dword [0x1003c9e8]
mov ecx, eax
and ecx, 0x7ffffffe
or ecx, edx
shr ecx, 1
xor ecx, dword [0x1003d018]
mov edx, eax
and edx, 1
neg edx
and edx, 0x9908b0df
xor edx, ecx
mov dword [0x1003c9e4], edx
and eax, 0x80000000
mov ecx, dword [0x1003c9ec]
mov edx, ecx
and edx, 0x7ffffffe
or edx, eax
shr edx, 1
xor edx, dword [0x1003d01c]
mov eax, ecx
and eax, 1
neg eax
and eax, 0x9908b0df
xor eax, edx
mov dword [0x1003c9e8], eax
and ecx, 0x80000000
mov eax, dword [0x1003c9f0]
mov edx, eax
and edx, 0x7ffffffe
or edx, ecx
shr edx, 1
xor edx, dword [0x1003d020]
movd xmm3, eax
and eax, 1
neg eax
and eax, 0x9908b0df
xor eax, edx
mov dword [0x1003c9ec], eax
pshufd xmm4, xmm3, 0
mov eax, 0xfffff9d0
nop word cs:[eax + eax]
movups xmm3, xmmword [eax + 0x1003d024]
shufps xmm4, xmm3, 3
shufps xmm4, xmm3, 0x98
andps xmm4, xmm0
movaps xmm5, xmm3
andps xmm5, xmm1
orps xmm5, xmm4
movdqu xmm6, xmmword [eax + 0x1003cc94]
psrld xmm5, 1
movaps xmm4, xmm3
pslld xmm3, 0x1f
psrad xmm3, 0x1f
pand xmm3, xmm2
pxor xmm3, xmm6
pxor xmm3, xmm5
movdqu xmmword [eax + 0x1003d020], xmm3
add eax, 0x10
jne 0x100153f0
mov edx, 0x80000000
and edx, dword [0x1003d020]
mov eax, dword [0x1003c664]
mov ecx, eax
and ecx, 0x7ffffffe
or ecx, edx
shr ecx, 1
xor ecx, dword [0x1003cc94]
mov edx, eax
and edx, 1
neg edx
and edx, 0x9908b0df
xor edx, ecx
mov dword [0x1003d020], edx
mov ecx, 4
jmp 0x10015485
mov eax, dword [ecx + 0x1003c664]
add ecx, 4
mov dword [0x1003c0e0], ecx
mov ecx, eax
shr ecx, 0xb
xor ecx, eax
mov eax, ecx
shl eax, 7
and eax, 0x9d2c5680
xor eax, ecx
mov ecx, eax
shl ecx, 0xf
and ecx, 0xefc60000
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor eax, ecx
ret