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

Disassembly:
push ebp
lea ebp, [esp - 0x138c]
mov eax, 0x138c
call fcn.1010d5c0
push 0xffffffffffffffff
push 0x101ef71d
mov eax, dword fs:[0]
push eax
sub esp, 0x34
mov eax, dword [0x102e5cc0]
xor eax, ebp
mov dword [ebp + 0x1388], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x18], ecx
mov esi, dword [ecx + 0xc]
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x10], ebx
xor edi, edi
mov dword [ebp - 0x34], ebx
xor ecx, ecx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x2c], eax
test esi, esi
je 0x1004e475
cmp esi, 0x3fffffff
ja 0x1004e83e
push esi
lea ecx, [ebp - 0x34]
call fcn.10015150
mov ebx, dword [ebp - 0x34]
shl esi, 2
push esi
push edi
push ebx
mov dword [ebp - 0x10], ebx
call fcn.1010f560
mov eax, dword [ebp - 0x2c]
lea edi, [esi + ebx]
add esp, 0xc
mov dword [ebp - 0x30], edi
mov ecx, ebx
mov dword [ebp - 0x28], eax
mov esi, dword [ebp - 0x18]
xor eax, eax
mov dword [ebp - 4], 0
cmp dword [esi + 0xc], eax
jbe 0x1004e48f
mov dword [ecx + eax*4], eax
inc eax
cmp eax, dword [esi + 0xc]
jb 0x1004e486
mov eax, dword [esi + 0x14]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1010d49b
mov dword [esi + 0x58], eax
xor ecx, ecx
mov eax, dword [esi + 0x14]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1010d49b
add esp, 8
mov dword [esi + 0x5c], eax
lea ecx, [esi + 0x60]
push dword [esi + 0x54]
call fcn.100570b0
cmp dword [esi + 0x54], 0
mov dword [ebp - 0x24], 0
jle 0x1004e7d8
call fcn.100f9265
mov dword [ebp + 0x1384], 0xffffffff
mov edx, 1
mov dword [ebp + 4], eax
nop dword [eax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [ebp + edx*4 + 4], eax
inc edx
cmp edx, 0x270
jb 0x1004e500
mov esi, 0x270
mov dword [ebp], esi
cmp ebx, edi
je 0x1004e71a
lea eax, [ebx + 4]
mov ecx, 1
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], eax
cmp eax, edi
je 0x1004e71a
lea eax, [ecx + 1]
mov dword [ebp - 0x14], eax
xor edi, edi
xor ebx, ebx
test ecx, ecx
je 0x1004e6bc
cmp esi, 0x270
jne 0x1004e59e
lea edx, [ebp + 8]
nop
mov ecx, dword [edx]
lea edx, [edx + 4]
xor ecx, dword [edx - 8]
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, ecx
xor eax, dword [edx + 0x62c]
mov dword [edx + 0x9b8], eax
sub esi, 1
jne 0x1004e560
mov esi, dword [ebp]
jmp 0x1004e685
cmp esi, 0x4e0
jb 0x1004e685
mov edi, dword [ebp + 0x9c4]
lea esi, [ebp + 0x9c4]
mov ebx, 0xe3
nop dword [eax + eax]
mov eax, edi
lea edx, [esi]
mov edi, dword [edx + 4]
lea esi, [edx + 4]
mov ecx, eax
xor ecx, edi
and ecx, 0x7fffffff
xor ecx, eax
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 [edx + 0x634]
mov dword [edx - 0x9c0], eax
sub ebx, 1
jne 0x1004e5c0
mov edi, dword [ebp + 0xd50]
lea esi, [ebp + 0xd50]
mov ebx, 0x18c
nop dword [eax]
mov eax, edi
lea edx, [esi]
mov edi, dword [edx + 4]
lea esi, [edx + 4]
mov ecx, eax
xor ecx, edi
and ecx, 0x7fffffff
xor ecx, eax
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edx - 0xd4c]
xor eax, ecx
mov dword [edx - 0x9c0], eax
sub ebx, 1
jne 0x1004e610
mov ecx, dword [ebp + 0x1380]
xor ecx, dword [ebp + 4]
and ecx, 0x7fffffff
xor ecx, dword [ebp + 0x1380]
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 [ebp + 0x634]
xor esi, esi
mov dword [ebp + 0x9c0], eax
mov dword [ebp], esi
mov ecx, dword [ebp + esi*4 + 4]
mov eax, ecx
shr eax, 0xb
inc esi
and eax, dword [ebp + 0x1384]
xor ecx, eax
mov dword [ebp], 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 edi, ecx
shr edi, 0x12
xor edi, ecx
or ebx, 0xffffffff
xor edx, edx
mov eax, ebx
div dword [ebp - 0x14]
xor edx, edx
mov ecx, eax
mov eax, edi
div dword [ebp - 0x14]
cmp eax, ecx
mov ecx, dword [ebp - 0x20]
jb 0x1004e6e6
mov eax, ebx
xor edx, edx
mov ebx, dword [ebp - 0x14]
div ebx
cmp edx, ecx
jne 0x1004e548
jmp 0x1004e6e9
mov ebx, dword [ebp - 0x14]
mov eax, edi
xor edx, edx
div ebx
mov edi, dword [ebp - 0x1c]
cmp edx, ecx
je 0x1004e706
mov eax, dword [ebp - 0x10]
mov ecx, dword [edi]
mov eax, dword [eax + edx*4]
mov dword [edi], eax
mov eax, dword [ebp - 0x10]
mov dword [eax + edx*4], ecx
add edi, 4
mov ecx, ebx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edi
cmp edi, dword [ebp - 0x30]
jne 0x1004e542
mov esi, dword [ebp - 0x18]
mov ebx, dword [esi + 0xc]
lea eax, [esi + 0x6c]
push eax
push 0x14
call fcn.1004a240
mov edi, eax
add esp, 8
mov dword [ebp - 0x1c], edi
test edi, edi
je 0x1004e747
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 0
jmp 0x1004e749
xor edi, edi
cmp ebx, 1
jne 0x1004e770
mov ebx, dword [ebp - 0x10]
mov dword [edi + 0x10], 0
mov dword [edi + 0xc], 0
mov eax, dword [ebx]
mov dword [edi], eax
mov ecx, dword [ebx]
mov eax, dword [esi + 0x44]
mov eax, dword [eax + ecx*4]
mov dword [edi + 8], eax
jmp 0x1004e7bf
lea eax, [ebp - 0x3c]
mov ecx, esi
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x40]
push eax
push ebx
push dword [ebp - 0x10]
call fcn.10054a80
mov esi, dword [ebp - 0x40]
movss xmm0, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x18]
push esi
push dword [ebp - 0x10]
mov dword [edi], eax
movss dword [edi + 4], xmm0
call fcn.10051210
sub ebx, esi
mov dword [edi + 0xc], eax
push ebx
mov ebx, dword [ebp - 0x10]
lea eax, [ebx + esi*4]
mov esi, dword [ebp - 0x18]
push eax
mov ecx, esi
call fcn.10051210
mov dword [edi + 0x10], eax
mov ecx, dword [ebp - 0x24]
mov eax, dword [esi + 0x60]
mov dword [eax + ecx*4], edi
inc ecx
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x24], ecx
cmp ecx, dword [esi + 0x54]
jl 0x1004e4e6
push dword [esi + 0x58]
call fcn.1010d07d
push dword [esi + 0x5c]
call fcn.1010d07d
add esp, 8
test ebx, ebx
je 0x1004e81b
mov ecx, dword [ebp - 0x28]
mov eax, ebx
sub ecx, ebx
and ecx, 0xfffffffc
cmp ecx, 0x1000
jb 0x1004e811
mov ebx, dword [eax - 4]
add ecx, 0x23
sub eax, ebx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004e843
push ecx
push ebx
call fcn.1010d0f5
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1388]
xor ecx, ebp
call fcn.1010d06f
lea esp, [ebp + 0x138c]
pop ebp
ret
call fcn.10008bf0
call fcn.101159de
int3