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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c74d8
mov eax, dword fs:[0]
push eax
sub esp, 0x9ec
mov eax, dword [0x4fa078]
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 edi, ecx
mov dword [ebp - 0x9dc], edi
mov dword [ebp - 0x9f4], edi
mov dword [ebp - 0x9e0], 0
mov eax, dword fs:[0x2c]
mov ebx, dword [eax]
mov eax, dword [0x50988c]
cmp eax, dword [ebx + 4]
jle 0x4146de
push 0x50988c
call fcn.0044b9a8
add esp, 4
cmp dword [0x50988c], 0xffffffff
jne 0x4146de
push 0x50988c
call fcn.0044b95e
add esp, 4
mov eax, dword [0x508410]
cmp eax, dword [ebx + 4]
jle 0x4147c5
push 0x508410
call fcn.0044b9a8
add esp, 4
cmp dword [0x508410], 0xffffffff
jne 0x4147c5
mov dword [ebp - 4], 1
xorps xmm0, xmm0
movq qword [0x50987c], xmm0
mov dword [0x509884], 0
call fcn.00449e32
mov dword [ebp - 0x9f0], eax
call fcn.00449e32
mov dword [ebp - 0x9ec], eax
call fcn.00449e32
mov dword [ebp - 0x9e8], eax
call fcn.00449e32
xor ecx, ecx
mov dword [ebp - 0x9e4], eax
xor eax, eax
mov dword [0x50987c], 0
mov dword [0x509880], ecx
mov dword [0x509884], eax
mov byte [ebp - 4], 2
lea esi, [ebp - 0x9f0]
cmp eax, ecx
je 0x41478d
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [0x509880]
add ecx, 4
mov dword [0x509880], ecx
jmp 0x41479a
push esi
push ecx
call fcn.00439140
mov ecx, dword [0x509880]
add esi, 4
lea eax, [ebp - 0x9e0]
cmp esi, eax
je 0x4147ae
mov eax, dword [0x509884]
jmp 0x414774
push 0x4cefa0
call fcn.0044bf2f
push 0x508410
call fcn.0044b95e
add esp, 8
mov eax, dword [0x509814]
cmp eax, dword [ebx + 4]
jle 0x41489f
push 0x509814
call fcn.0044b9a8
add esp, 4
cmp dword [0x509814], 0xffffffff
jne 0x41489f
mov dword [0x50980c], 0xffffffff
mov edx, 0x1571
mov dword [0x50848c], 0x1571
mov ecx, 1
nop
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [ecx*4 + 0x50848c], edx
inc ecx
cmp ecx, 0x270
jl 0x414810
lea eax, [ebp - 0x10]
mov dword [0x508488], 0x270
push eax
lea eax, [ebp - 0x9d0]
push eax
call fcn.004370c0
xor edx, edx
lea ebx, [ebp - 0x9d0]
xor esi, esi
mov eax, dword [ebx]
mov ecx, eax
or ecx, edx
mov dword [esi*4 + 0x50848c], eax
mov edx, eax
shr edx, 0x1f
test esi, esi
cmovne edx, ecx
inc esi
add ebx, 4
cmp esi, 0x270
jb 0x414853
mov eax, dword [0x50848c]
or ecx, 0xffffffff
test edx, edx
mov dword [0x508488], 0x270
push 0x509814
cmove eax, ecx
mov dword [0x50848c], eax
call fcn.0044b95e
add esp, 4
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 0xf
mov byte [edi], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x9e0], 1
mov dword [ebp - 0x9d8], 0x10
nop dword [eax + eax]
mov eax, dword [0x508488]
cmp eax, 0x270
jne 0x414924
mov edx, 0x508490
mov ecx, dword [edx - 4]
xor ecx, dword [edx]
and ecx, 0x7fffffff
xor ecx, dword [edx - 4]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edx + 0x630]
xor eax, ecx
mov dword [edx + 0x9bc], eax
add edx, 4
cmp edx, 0x508e50
jl 0x4148e1
mov eax, dword [0x508488]
jmp 0x414a0b
cmp eax, 0x4e0
jb 0x414a0b
xor eax, eax
mov edx, dword [eax*4 + 0x508e4c]
xor edx, dword [eax*4 + 0x508e50]
and edx, 0x7fffffff
xor edx, dword [eax*4 + 0x508e4c]
mov ecx, edx
and cl, 1
movzx ecx, cl
neg ecx
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [eax*4 + 0x509480]
xor ecx, edx
mov dword [eax*4 + 0x50848c], ecx
inc eax
cmp eax, 0xe3
jl 0x414931
cmp eax, 0x26f
jge 0x4149c7
nop
mov edx, dword [eax*4 + 0x508e50]
xor edx, dword [eax*4 + 0x508e4c]
and edx, 0x7fffffff
xor edx, dword [eax*4 + 0x508e4c]
mov ecx, edx
and cl, 1
movzx ecx, cl
neg ecx
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [eax*4 + 0x508100]
xor ecx, edx
mov dword [eax*4 + 0x50848c], ecx
inc eax
cmp eax, 0x26f
jl 0x414980
mov edx, dword [eax*4 + 0x508e4c]
xor edx, dword [0x50848c]
and edx, 0x7fffffff
xor edx, dword [eax*4 + 0x508e4c]
mov ecx, edx
and cl, 1
movzx ecx, cl
neg ecx
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [0x508abc]
mov dword [eax*4 + 0x50848c], ecx
xor eax, eax
mov dword [0x508488], eax
mov esi, dword [eax*4 + 0x50848c]
inc eax
mov dword [0x508488], eax
mov eax, esi
shr eax, 0xb
and eax, dword [0x50980c]
xor esi, eax
mov eax, esi
and eax, 0xff3a58ad
shl eax, 7
xor esi, eax
mov eax, esi
and eax, 0xffffdf8c
shl eax, 0xf
xor esi, eax
mov eax, esi
shr eax, 0x12
xor esi, eax
mov eax, 0x8421085
mul esi
mov ecx, esi
sub ecx, edx
shr ecx, 1
add ecx, edx
mov edx, dword [edi + 0x14]
shr ecx, 5
mov eax, ecx
shl eax, 5
sub eax, ecx
mov ecx, dword [edi + 0x10]
add eax, eax
sub esi, eax
mov bl, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [ebp - 0x9d4], bl
cmp ecx, edx
jae 0x414a90
lea eax, [ecx + 1]
mov dword [edi + 0x10], eax
mov eax, edi
cmp edx, 0x10
jb 0x414a86
mov eax, dword [edi]
mov byte [eax + ecx], bl
mov byte [eax + ecx + 1], 0
jmp 0x414aab
push dword [ebp - 0x9d4]
mov byte [ebp - 0x9dc], 0
push dword [ebp - 0x9dc]
push ecx
mov ecx, edi
call fcn.00409830
sub dword [ebp - 0x9d8], 1
jne 0x4148d0
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.0044b7d5
mov esp, ebp
pop ebp
ret