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

Disassembly:
mov eax, 0x1005c2aa
call fcn.1005a5c0
sub esp, 0x4c
cmp byte [ebp + 0x18], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov esi, edx
mov byte [ebp - 0x14], cl
je 0x1003d2ca
mov dword [ebp - 0x18], 0x7221
xor ebx, ebx
cmp dword [ebp - 0x18], 0x75e3
jle 0x1003d19a
push ebx
push 0x438
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
mov esi, ebx
mov edi, ebx
mov eax, edi
mov ecx, 0x10077318
or eax, esi
cdq
push edx
push eax
call fcn.1000f05b
inc edi
cmp edi, 0x44cd
jl 0x1003d177
inc esi
cmp esi, 0x2032
jl 0x1003d175
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x18], 0x70ba
jge 0x1003d1b5
mov edx, str.ouqconvky_jqlnx_fgself
mov ecx, 0x10077318
call fcn.10013928
or esi, 0xffffffff
mov dword [ebp - 4], esi
cmp byte [ebp - 0x14], 0
je 0x1003d2a7
mov dword [ebp - 0x44], 0xf
mov dword [ebp - 0x48], ebx
mov byte [ebp - 0x58], bl
push ecx
lea eax, [ebp - 0x58]
mov dword [ebp - 4], 2
push eax
lea eax, [ebp + 0xc]
mov cl, 1
push 0x10ae
push eax
call fcn.1003cd9b
mov eax, dword [0x106ef990]
add esp, 0x10
test al, 1
jne 0x1003d21f
or eax, 1
mov dword [0x106ef990], eax
push 0x1e4a1
mov byte [ebp - 4], 3
call fcn.10003660
mov byte [0x106ee5e9], al
mov byte [ebp - 4], 2
mov eax, dword [0x106ef990]
pop ecx
test al, 2
jne 0x1003d243
or eax, 2
mov dword [0x106ef990], eax
push 0x11d21
mov byte [ebp - 4], 4
call fcn.10003660
pop ecx
mov byte [0x106ee5e8], al
mov byte [ebp - 4], 2
push 1
push 0x106ee5e8
push 0x106ee5e9
lea eax, [ebp + 0xc]
push eax
sub esp, 0x10
lea ecx, [ebp - 0x58]
call fcn.1003cf69
mov ecx, dword [ebp + 0x14]
lea eax, [ebp - 0x58]
add esp, 0x20
cmp ecx, eax
je 0x1003d273
push esi
push ebx
push eax
call fcn.1000fec3
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.1000fffe
jmp 0x1003d591
push 0xdde
push 0x4e7
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_LineTo]
jmp 0x1003d591
cmp byte [ebp + 0x10], 0
je 0x1003d2f1
push 3
mov dword [esi], 0
pop edi
jmp 0x1003d2e8
push dword [ebp + 0x1c]
mov ecx, esi
call fcn.1003be4c
inc dword [esi]
pop ecx
cmp dword [esi], edi
jl 0x1003d2db
jmp 0x1003d591
mov eax, dword [0x106ef990]
or esi, 0xffffffff
test al, 4
jne 0x1003d33f
or eax, 4
mov dword [0x106ef984], esi
mov ecx, 0x1571
mov dword [0x106ef990], eax
xor edx, edx
mov dword [0x106ee604], ecx
inc edx
mov edi, 0x270
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x106ee604], ecx
inc edx
cmp edx, edi
jl 0x1003d31e
mov dword [0x106ee600], edi
xor ebx, ebx
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x18], ebx
jmp 0x1003d357
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x1c], esi
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x1003d34d
push 3
pop edi
mov dword [ebp - 0x18], edi
jmp 0x1003d3b4
push dword [ebp + 0x18]
movdqa xmm0, xmmword [0x100699e0]
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x40]
mov dword [ebp - 0x30], ebx
push eax
push ebx
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x2c], ebx
movdqu xmmword [ebp - 0x40], xmm0
mov dword [ebp - 0x28], ebx
call fcn.10014747
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 8], ebx
mov eax, dword [ecx + 8]
inc dword [ecx + 8]
cmp dword [ecx + 8], 1
mov dword [ebp + eax*4 - 0x1c], 2
jl 0x1003d395
lea ecx, [ebp - 0x30]
call fcn.1000f3c0
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 5
jne 0x1003d365
xor cl, cl
call fcn.1003ba50
cmp byte [0x106ee435], bl
jne 0x1003d4f6
push ebx
mov edx, 0x106ee600
mov ecx, 0x64b1
call fcn.1003ca2a
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], esi
pop ecx
mov dword [ebp - 0x18], ebx
jmp 0x1003d3f7
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 + 0x18], 0x20bd2ab
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x1003d3e9
cmp dword [ebp + 0x18], ebx
je 0x1003d43b
mov ecx, dword [ebp + 0x18]
xor edx, edx
mov eax, dword [ebp + 0x18]
add ecx, 0x3f02
cmp eax, ecx
mov eax, dword [ebp + 0x18]
setge dl
imul eax, edx
cmp eax, dword [ebp + 0x18]
jge 0x1003d429
cmp dword [ebp + 0x18], ebx
jne 0x1003d429
mov eax, ebx
jmp 0x1003d42c
xor eax, eax
inc eax
add eax, 0x5e1f6f08
cmp eax, dword [ebp + 0x18]
jle 0x1003d43b
xor edx, edx
inc edx
jmp 0x1003d43d
mov edx, ebx
mov eax, dword [ebp + 0x18]
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp + 0x18]
setg cl
xor edx, edx
cmp ecx, 0xfffffff8
setne dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp + 0x18]
setg cl
xor edx, edx
cmp ecx, 0x2bb2
setg dl
imul eax, edx
cmp eax, dword [ebp + 0x18]
je 0x1003d49c
mov dword [ebp - 0x18], 0xfffffffe
mov dword [ebp - 0x18], ebx
jmp 0x1003d489
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x20], 0x2057
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x1003d47b
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
sub ecx, eax
mov dword [ebp - 0x18], ecx
jmp 0x1003d4ef
mov dword [ebp - 0x24], 0x89f2
mov dword [ebp - 0x18], 0x2891f433
mov eax, dword [ebp - 0x18]
cmp esi, eax
mov eax, dword [ebp + 0x18]
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, eax
mov eax, dword [ebp - 0x24]
mov ecx, 0x218670fc
setg dl
sub ecx, edx
mov edx, dword [ebp + 0x18]
neg ecx
sbb ecx, ecx
sub edx, eax
mov eax, dword [ebp + 0x18]
inc ecx
neg edx
sbb edx, edx
inc edx
imul edx, ecx
xor ecx, ecx
cmp eax, edx
mov eax, dword [ebp + 0x18]
setl cl
sub ecx, eax
mov eax, dword [ebp + 0x18]
add eax, ecx
mov dword [ebp - 0x18], eax
mov byte [0x106ee435], 1
mov eax, dword [0x106ee600]
cmp eax, 0x270
jne 0x1003d542
mov edx, 0x106ee608
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, 0x106eefc8
jl 0x1003d507
jmp 0x1003d54e
cmp eax, 0x4e0
jb 0x1003d553
call fcn.1003d5db
mov eax, dword [0x106ee600]
mov edx, dword [eax*4 + 0x106ee604]
inc eax
mov dword [0x106ee600], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x106ef984]
xor edx, eax
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov eax, edx
and eax, 0xffffdf8c
shl eax, 0xf
xor edx, eax
mov eax, dword [ebp + 8]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret