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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x430b85
mov eax, dword fs:[0]
push eax
mov eax, 0x13cc
call fcn.00428ee0
mov eax, dword [0x43c034]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x40]
xorps xmm0, xmm0
mov dword [ebp - 0x13d0], eax
push 0x30
mov dword [ebp - 0x13d4], eax
movups xmmword [ebp - 0x40], xmm0
call fcn.00404c30
movups xmm0, xmmword [str.abcdefghijklmnopqrstuvwxyz0123456789]
mov ecx, eax
mov dword [ebp - 0x30], 0x24
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x2c], 0x2f
movups xmmword [ecx], xmm0
movups xmm0, xmmword [0x434bac]
movups xmmword [ecx + 0x10], xmm0
mov eax, dword [0x434bbc]
mov dword [ecx + 0x20], eax
mov byte [ecx + 0x24], 0
mov dword [ebp - 4], 0
call fcn.004285e4
mov edx, eax
mov dword [ebp - 0x44], 0xffffffff
mov dword [ebp - 0x13c4], edx
mov ecx, 1
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [ebp + ecx*4 - 0x13c4], edx
inc ecx
cmp ecx, 0x270
jb 0x40b215
xorps xmm0, xmm0
mov dword [ebp - 0x13c8], 0x270
xor edi, edi
mov ecx, 0xf
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], ecx
mov byte [ebp - 0x28], 0
mov esi, dword [ebp + 0xc]
mov byte [ebp - 4], 1
test esi, esi
jle 0x40b2bd
mov edi, dword [ebp - 0x40]
lea eax, [ebp - 0x13c8]
mov dword [ebp - 0x13cc], eax
lea ecx, [ebp - 0x13cc]
call fcn.0040c5b0
mov ecx, 0x24
mul ecx
cmp eax, ecx
jae 0x40b2a5
cmp eax, 4
jae 0x40b2a5
mov edi, ecx
nop dword [eax]
lea ecx, [ebp - 0x13cc]
call fcn.0040c5b0
mul edi
cmp eax, 4
jb 0x40b290
mov edi, dword [ebp - 0x40]
movzx eax, byte [edi + edx]
lea ecx, [ebp - 0x28]
push eax
call fcn.00415d70
sub esi, 1
jne 0x40b270
mov edi, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov eax, 0x7fffffff
sub eax, edi
cmp eax, 4
jb 0x40b3cb
mov edx, dword [ebp - 0x13d0]
lea eax, [ebp - 0x28]
cmp ecx, 0x10
xorps xmm0, xmm0
lea ecx, [edi + 4]
mov esi, 0xf
cmovae eax, dword [ebp - 0x28]
mov dword [ebp - 0x13d4], eax
mov eax, edx
mov dword [ebp - 0x13cc], eax
movups xmmword [edx], xmm0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
cmp ecx, esi
jbe 0x40b345
mov esi, ecx
or esi, 0xf
cmp esi, 0x7fffffff
jbe 0x40b31f
mov esi, 0x7fffffff
jmp 0x40b329
mov eax, 0x16
cmp esi, eax
cmovb esi, eax
lea eax, [esi + 1]
mov ecx, edx
push eax
call fcn.00404c30
mov edx, dword [ebp - 0x13d0]
lea ecx, [edi + 4]
mov dword [ebp - 0x13cc], eax
mov dword [edx], eax
push edi
push dword [ebp - 0x13d4]
mov dword [edx + 0x10], ecx
push eax
mov dword [edx + 0x14], esi
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0x13cc]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
mov dword [edi + eax], 0x706d742e
mov byte [eax + edi + 4], 0
cmp ecx, 0x10
jb 0x40b39d
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40b393
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40b3d0
push ecx
push edx
call fcn.00428a43
add esp, 8
push 0x30
push dword [ebp - 0x40]
call fcn.00428a43
mov eax, dword [ebp - 0x13d0]
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00428a51
mov esp, ebp
pop ebp
ret
call fcn.00404c00
call fcn.00429ae0
int3