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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
cmp dword [ecx + 0x138c], 0
push ebx
push esi
lea eax, [ecx + 8]
lea edx, [ecx + 0x9cc]
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], eax
mov dword [ebp - 4], edx
je 0x448ec7
mov eax, 0x9908b0df
movd mm4, eax
punpckldq mm4, mm4
mov eax, 1
movd mm5, eax
punpckldq mm5, mm5
movq mm6, mm5
psllq mm6, 0x1f
movq mm7, mm6
psubd mm7, mm5
mov esi, dword [ebp - 8]
add esi, 0x388
mov edi, esi
add edi, 0x634
mov ecx, 0xffffff8f
movq mm0, qword [esi + ecx*8]
pand mm0, mm6
movq mm1, qword [esi + ecx*8 + 4]
movq mm2, qword [edi + ecx*8]
pand mm1, mm7
por mm0, mm1
movq mm3, mm1
psrld mm0, 1
pand mm3, mm5
pxor mm2, mm0
psubd mm3, mm5
movq mm0, qword [esi + ecx*8 + 8]
pandn mm3, mm4
movq mm1, qword [esi + ecx*8 + 0xc]
pxor mm3, mm2
movq mm2, qword [edi + ecx*8 + 8]
pand mm0, mm6
movq qword [esi + ecx*8], mm3
pand mm1, mm7
inc ecx
jne 0x448d34
mov eax, dword [esi]
mov ebx, dword [esi + 4]
and eax, 0x80000000
and ebx, 0x7fffffff
mov edx, dword [edi]
or eax, ebx
shr eax, 1
or ebx, 0xfffffffe
xor eax, edx
add ebx, 1
xor eax, 0x9908b0df
and ebx, 0x9908b0df
xor ebx, eax
mov dword [esi], ebx
mov esi, dword [ebp - 8]
mov eax, dword [esi]
add esi, 0x9c0
mov dword [esi], eax
mov edi, esi
sub edi, 0x38c
add esi, 4
add edi, 4
mov ecx, 0xffffff39
movq mm0, qword [esi + ecx*8]
pand mm0, mm6
movq mm1, qword [esi + ecx*8 + 4]
movq mm2, qword [edi + ecx*8]
pand mm1, mm7
por mm0, mm1
movq mm3, mm1
psrld mm0, 1
pand mm3, mm5
pxor mm2, mm0
psubd mm3, mm5
movq mm0, qword [esi + ecx*8 + 8]
pandn mm3, mm4
movq mm1, qword [esi + ecx*8 + 0xc]
pxor mm3, mm2
movq mm2, qword [edi + ecx*8 + 8]
pand mm0, mm6
movq qword [esi + ecx*8], mm3
pand mm1, mm7
inc ecx
jne 0x448dc9
push ebp
mov eax, 0x9d2c5680
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xefc60000
movd mm7, eax
punpckldq mm7, mm7
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
add esi, 0x9c0
add edi, 0x9c0
mov ecx, 0xfffffec8
movq mm0, qword [esi + ecx*8]
movq mm1, mm0
psrld mm0, 0xb
pxor mm0, mm1
movq mm2, qword [esi + ecx*8 + 8]
movq mm1, mm0
pslld mm0, 7
movq mm3, mm2
psrld mm2, 0xb
pand mm0, mm6
pxor mm2, mm3
pxor mm0, mm1
movq mm3, mm2
pslld mm2, 7
movq mm1, mm0
pslld mm0, 0xf
pand mm2, mm6
pand mm0, mm7
pxor mm2, mm3
pxor mm0, mm1
movq mm3, mm2
pslld mm2, 0xf
movq mm1, mm0
pand mm2, mm7
psrld mm0, 0x12
pxor mm2, mm3
pxor mm1, mm0
movq mm0, qword [esi + ecx*8 + 0x10]
movq mm3, mm2
movq qword [edi + ecx*8], mm1
psrld mm2, 0x12
movq mm1, mm0
pxor mm3, mm2
movq mm2, qword [esi + ecx*8 + 0x18]
psrld mm0, 0xb
movq qword [edi + ecx*8 + 8], mm3
pxor mm0, mm1
add ecx, 2
jne 0x448e3f
pop ebp
emms
mov eax, dword [ebp - 0xc]
mov dword [eax + 4], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 8]
add esi, 0x38c
mov edi, esi
add edi, 0x634
mov ecx, 0xffffff1d
mov eax, dword [esi + ecx*4]
mov ebx, dword [esi + ecx*4 + 4]
and eax, 0x80000000
and ebx, 0x7fffffff
mov edx, dword [edi + ecx*4]
or eax, ebx
shr eax, 1
or ebx, 0xfffffffe
xor eax, edx
add ebx, 1
xor eax, 0x9908b0df
and ebx, 0x9908b0df
xor ebx, eax
mov eax, dword [esi + ecx*4 + 4]
mov dword [esi + ecx*4], ebx
mov ebx, dword [esi + ecx*4 + 8]
inc ecx
jne 0x448ee4
mov esi, dword [ebp - 8]
mov eax, dword [esi]
add esi, 0x9c0
mov dword [esi], eax
mov edi, esi
sub edi, 0x38c
mov ecx, 0xfffffe73
mov eax, dword [esi + ecx*4]
mov ebx, dword [esi + ecx*4 + 4]
and eax, 0x80000000
and ebx, 0x7fffffff
mov edx, dword [edi + ecx*4]
or eax, ebx
shr eax, 1
or ebx, 0xfffffffe
xor eax, edx
add ebx, 1
xor eax, 0x9908b0df
and ebx, 0x9908b0df
xor ebx, eax
mov eax, dword [esi + ecx*4 + 4]
mov dword [esi + ecx*4], ebx
mov ebx, dword [esi + ecx*4 + 8]
inc ecx
jne 0x448f3a
push ebp
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
add esi, 0x9c0
add edi, 0x9c0
mov ecx, 0xfffffec8
mov eax, dword [esi + ecx*8]
mov edx, dword [esi + ecx*8 + 4]
mov ebx, eax
shr eax, 0xb
mov ebp, edx
shr edx, 0xb
xor eax, ebx
xor edx, ebp
mov ebx, eax
shl eax, 7
mov ebp, edx
shl edx, 7
and eax, 0x9d2c5680
and edx, 0x9d2c5680
xor eax, ebx
xor edx, ebp
mov ebx, eax
shl eax, 0xf
mov ebp, edx
shl edx, 0xf
and eax, 0xefc60000
and edx, 0xefc60000
xor eax, ebx
xor edx, ebp
mov ebx, eax
shr eax, 0x12
mov ebp, edx
shr edx, 0x12
xor eax, ebx
xor edx, ebp
mov dword [edi + ecx*8], eax
mov dword [edi + ecx*8 + 4], edx
mov eax, dword [esi + ecx*8 + 8]
inc ecx
jne 0x448f8a
pop ebp
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword [ecx + 4], 0
pop ebx
mov esp, ebp
pop ebp
ret