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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x514cf4
mov eax, dword fs:[0]
push eax
sub esp, 0x54
mov eax, dword [0x682790]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
lea edi, [ebp - 0x50]
mov dword [ebp - 0x60], ebx
mov ecx, 0xf
mov dword [ebp - 0x5c], 0
mov esi, 0x520a40
mov eax, dword fs:[0x2c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x985978]
mov dword [ebp - 0x54], ebx
movsw word es:[edi], word [esi]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x6853f8]
movsb byte es:[edi], byte [esi]
cmp eax, dword [ecx + 4]
jg 0x8a413e
mov ecx, ebx
call dword [fcn.0051c4d8]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x54]
mov ecx, edi
push ebx
mov dword [ebp - 4], 0
mov dword [ebp - 0x5c], 1
call dword [0x51c4e0]
test ebx, ebx
jle 0x8a4120
mov esi, dword [0x684070]
cmp esi, 0x270
jne 0x8a3fc2
mov edx, 0x684078
nop dword [eax]
mov ecx, dword [edx - 4]
lea edx, [edx + 4]
xor ecx, dword [edx - 4]
and ecx, 0x7fffffff
xor ecx, dword [edx - 8]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edx + 0x62c]
xor eax, ecx
mov dword [edx + 0x9b8], eax
sub esi, 1
jne 0x8a3f80
mov esi, dword [0x684070]
jmp 0x8a40a3
cmp esi, 0x4e0
jb 0x8a40a3
mov edx, 0x9c4
mov ecx, dword [edx + 0x684074]
xor ecx, dword [edx + 0x684070]
and ecx, 0x7fffffff
xor ecx, dword [edx + 0x684070]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edx + 0x6846a4]
xor eax, ecx
mov dword [edx + 0x6836b0], eax
add edx, 4
cmp edx, 0xd50
jb 0x8a3fd3
mov eax, 0xd50
nop dword [eax + eax]
mov edx, dword [eax + 0x684074]
xor edx, dword [eax + 0x684070]
and edx, 0x7fffffff
xor edx, dword [eax + 0x684070]
mov ecx, edx
and cl, 1
movzx ecx, cl
neg ecx
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [eax + 0x683324]
xor ecx, edx
mov dword [eax + 0x6836b0], ecx
add eax, 4
cmp eax, 0x1380
jb 0x8a4020
mov ecx, dword [0x6853f0]
xor ecx, dword [0x684074]
and ecx, 0x7fffffff
xor ecx, dword [0x6853f0]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, ecx
xor eax, dword [0x6846a4]
xor esi, esi
mov dword [0x684a30], eax
mov dword [0x684070], esi
mov ecx, dword [esi*4 + 0x684074]
mov eax, ecx
shr eax, 0xb
inc esi
and eax, dword [0x6853f4]
xor ecx, eax
mov dword [0x684070], esi
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov eax, 0x8421085
mov edi, ecx
shr edi, 0x12
xor edi, ecx
mul edi
mov ecx, edi
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 5
cmp ecx, 0x4210842
jae 0x8a3f70
mov eax, edi
xor edx, edx
mov ecx, 0x3e
mov edi, dword [ebp - 0x54]
div ecx
mov ecx, edi
movzx eax, byte [ebp + edx - 0x50]
push eax
call dword [0x51c4e8]
sub ebx, 1
jne 0x8a3f6a
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00930738
mov esp, ebp
pop ebp
ret
push 0x6853f8
call fcn.00930afd
add esp, 4
cmp dword [0x6853f8], 0xffffffff
jne 0x8a3f3d
lea eax, [ebp - 0x58]
mov dword [ebp - 4], 1
push eax
call dword [0x51c624]
add esp, 4
mov ecx, eax
mov byte [ebp - 4], 2
call dword [0x51c61c]
mov dword [0x6853f4], 0xffffffff
mov edx, 1
mov dword [0x684074], eax
jmp 0x8a4190
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [edx*4 + 0x684074], eax
inc edx
cmp edx, 0x270
jb 0x8a4190
lea ecx, [ebp - 0x58]
mov dword [0x684070], 0x270
call dword [0x51c618]
push 0x6853f8
call fcn.00930ab3
add esp, 4
jmp 0x8a3f3d