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

Disassembly:
mov eax, 0x10056b3b
call fcn.10055fd8
sub esp, 0x6c
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov edi, edx
mov dword [ebp - 0x38], edi
test cl, cl
je 0x10013939
cmp byte [ebp + 0x20], 0
je 0x10013615
mov dword [ebp - 0x18], 0x1664
cmp dword [ebp - 0x18], 0x17bd
jle 0x100135aa
call dword [sym.imp.KERNEL32.dll_SwitchToThread]
xor ebx, ebx
mov esi, ebx
mov dword [ebp - 0x1c], ebx
mov edi, ebx
mov dword [ebp - 0x24], ebx
mov ebx, edi
xor ebx, esi
mov esi, dword [ebp - 0x24]
mov eax, ebx
mov ecx, 0x1006f978
or eax, esi
cdq
push edx
push eax
call fcn.100032ed
inc esi
cmp esi, 0x39a7
jl 0x10013573
mov esi, dword [ebp - 0x1c]
inc edi
push 0
pop ebx
cmp edi, 0xc8f
jl 0x10013569
inc esi
mov dword [ebp - 0x1c], esi
cmp esi, 0x62ff
jl 0x10013567
jmp 0x100135ac
xor ebx, ebx
mov esi, dword [ebp + 8]
mov dword [ebp - 0x24], ebx
cmp dword [esi], ebx
jbe 0x100135db
push 0xa
pop edi
call fcn.10012651
xor edx, edx
mov ecx, dword [ebp + 0x1c]
div edi
mov eax, dword [ebp + 0x10]
add dx, word [eax]
movzx eax, dx
push eax
call fcn.10011980
inc ebx
cmp ebx, dword [esi]
jb 0x100135b9
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x18], 0x12e2
jge 0x100135f6
mov edx, str.uihymatka_dvs_brcwk_xzw_imvkkxn_quwg_jxyonotpl_mgxvtbepp_teme_ytpmet_nclu
mov ecx, 0x1006f978
call fcn.1000548e
jmp 0x10013a37
push 0x2021
push ecx
mov edx, 0x51e5
xor cl, cl
call fcn.1001279d
mov eax, dword [0x100711e0]
pop ecx
pop ecx
xor ecx, ecx
inc ecx
test cl, al
jne 0x1001367a
or eax, ecx
mov edx, 0x1571
or esi, 0xffffffff
mov dword [0x100711e0], eax
mov dword [0x10072574], esi
mov edi, ecx
mov dword [0x100711f4], edx
mov ebx, 0x270
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, edi
mov dword [edi*4 + 0x100711f4], edx
inc edi
cmp edi, ebx
jl 0x10013657
mov dword [0x100711f0], ebx
jmp 0x1001367d
or esi, 0xffffffff
xor ebx, ebx
mov dword [ebp - 0x38], 0x2dafbbd
mov dword [ebp - 0x18], ebx
jmp 0x10013699
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x3c], 0xfffffffd
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], ecx
jl 0x1001368b
mov dword [ebp - 0x18], ebx
jmp 0x100136ad
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x44], ecx
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jl 0x100136a3
mov dword [ebp - 0x18], ebx
jmp 0x100136c2
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x50], esi
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x100136b8
mov dword [ebp - 0x40], ebx
cmp dword [ebp - 0x40], ebx
jl 0x10013745
mov dword [ebp - 0x1c], 0xed23b618
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x2c], 0x4129b857
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x1c], ebx
jl 0x10013740
mov dword [ebp - 0x28], 0x9565e08c
push ecx
mov dword [ebp - 0x38], 5
mov ecx, 0x58df
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x38], 0xfffffff6
push ebx
call fcn.10012729
push 1
push 0x2c7c
lea eax, [ebp - 0x28]
xor cl, cl
push eax
push ebx
push 0x5ee4
push 0xa5
push 0x37a7
lea edx, [ebp - 0x2c]
call fcn.10013520
add esp, 0x24
dec dword [ebp - 0x1c]
jns 0x100136ec
xor ecx, ecx
inc ecx
dec dword [ebp - 0x40]
jns 0x100136d0
sub esp, 0xc
mov edx, 0x357f
push 0x3885
push ecx
push ecx
xor cl, cl
call fcn.100126f0
add esp, 0x18
cmp byte [0x10071175], bl
jne 0x10013872
mov dword [ebp - 0x1c], 0x7e2799ac
xor ecx, ecx
mov dword [ebp - 0x38], 0xc9cc1417
inc ecx
mov dword [ebp - 0x38], 5
mov dword [ebp - 0x38], 0x89a69576
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x38], 0xed1e12aa
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x38], 0xab06c0e2
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x38], 0xca1a1f05
mov dword [ebp - 0x38], 0xfffffffb
mov dword [ebp - 0x38], 0xe74a6e8f
mov dword [ebp - 0x38], 0x74a71a6e
mov dword [ebp - 0x18], ebx
jmp 0x100137cf
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x20], 0x80bfe737
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], ecx
jl 0x100137c1
push 0xa
mov dword [ebp - 0x1c], ebx
pop edi
jmp 0x10013833
mov dword [ebp - 0x24], 0xfffffffc
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x38], 0xb101aae4
mov dword [ebp - 0x38], 0x4b64b5c6
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x38], 0xefa5f9c7
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x38], 0x45dcefbd
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x18], ebx
jmp 0x10013821
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x60], 0xd2edc755
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 4
jl 0x10013813
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x24], eax
dec dword [ebp - 0x20]
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], edi
jle 0x100137dc
push ebx
push 0x13b
push 0x141c
push 0x1ca
push 0x73d0
push ecx
push 0x2dea
push 0x100711f0
push ebx
mov edx, 0x441b
mov ecx, 0x498b
call fcn.10013ebe
add esp, 0x24
mov byte [0x10071175], 1
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x1c], 0x1a
jmp 0x10013894
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], esi
push eax
push ecx
push ecx
mov cl, 1
call fcn.1001333c
add esp, 0xc
dec dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], esi
jne 0x1001387e
mov eax, dword [0x100711f0]
cmp eax, 0x270
jne 0x100138e5
mov edx, 0x100711f8
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, ecx
xor eax, dword [edx + 0x630]
mov dword [edx + 0x9bc], eax
add edx, 4
cmp edx, 0x10071bb8
jl 0x100138aa
jmp 0x100138f1
cmp eax, 0x4e0
jb 0x100138f6
call fcn.10014309
mov eax, dword [0x100711f0]
mov edx, dword [eax*4 + 0x100711f4]
inc eax
mov dword [0x100711f0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x10072574]
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 + 0xc]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
jmp 0x10013a37
mov dword [ebp - 0x24], 0x3237
xor ebx, ebx
cmp dword [ebp - 0x24], 0x33a9
jle 0x100139bf
push 1
push ebx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SelectPalette]
mov esi, ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x1c], 0x73e2
mov edi, ebx
mov eax, edi
lea ecx, [ebp - 0x78]
xor eax, esi
cdq
push edx
push eax
call fcn.10001a94
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1001398c
mov eax, dword [eax]
push eax
call fcn.1003cd2f
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x78]
call fcn.10003730
inc edi
cmp edi, 0x1acc
jl 0x10013973
dec esi
dec dword [ebp - 0x1c]
jne 0x10013971
mov esi, dword [ebp - 0x18]
inc esi
mov dword [ebp - 0x18], esi
cmp esi, 0x53b7
jl 0x10013967
mov edi, dword [ebp - 0x38]
cmp dword [ebp - 0x24], 0x315a
jge 0x100139d3
push str.folf_dagwk_ujj_evkwcpjg_ksjngb_ximsoa_wvtqinszo_fdb_pko_ktictsfy
call fcn.1003cd2f
pop ecx
or dword [ebp - 4], 0xffffffff
cmp byte [ebp + 0x14], 0
je 0x100139ef
push ecx
push 1
lea ecx, [ebp - 0x11]
mov byte [ebp - 0x11], bl
call fcn.10012729
pop ecx
pop ecx
jmp 0x10013a37
mov esi, dword [ebp + 0x18]
mov dword [esi], ebx
jmp 0x10013a33
mov dword [ebp - 0x38], 0xfffffff9
mov dword [ebp - 0x38], 0xb4ef66b1
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x38], 0xfffffffa
mov dword [ebp - 0x38], 0x9bdd7770
mov byte [ebp - 0x12], bl
cmp byte [ebp - 0x12], 0
je 0x10013a2f
push 0x1bae
push ecx
push ecx
xor cl, cl
call fcn.1001333c
add esp, 0xc
dec dword [edi]
dec dword [esi]
cmp dword [esi], ebx
jge 0x100139f6
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret