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

Disassembly:
mov eax, 0x10057205
call fcn.100568f8
sub esp, 0x3c
cmp byte [ebp + 0x14], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], ecx
je 0x10018ea0
mov eax, dword [ebp + 0x10]
cmp byte [eax], 0
je 0x10019142
push 0xf35
push 0x10bc
push 0
call dword [sym.imp.USER32.dll_RemoveMenu]
jmp 0x10019142
mov eax, dword [0x10072190]
test al, 1
jne 0x10018eef
or dword [0x10072164], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x10072190], eax
xor edx, edx
mov dword [0x10070de4], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x10070de4], ecx
inc edx
cmp edx, 0x270
jl 0x10018ec6
mov dword [0x10070de0], 0x270
mov dword [ebp - 0x18], 0x5dc5
cmp dword [ebp - 0x18], 0x5dd4
jle 0x10018f53
xor esi, esi
xor edi, edi
xor ebx, ebx
mov eax, edi
cdq
idiv ebx
mov eax, esi
mov ecx, edx
shl eax, cl
lea ecx, [ebp - 0x48]
cdq
push edx
push eax
call fcn.10001a11
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10018f25
mov eax, dword [eax]
push eax
call fcn.1003e6f6
pop ecx
push 0
push 1
lea ecx, [ebp - 0x48]
call fcn.10002003
inc ebx
cmp ebx, 0x170b
jl 0x10018f05
inc edi
cmp edi, 0x5d29
jl 0x10018f03
inc esi
cmp esi, 0x1a69
jl 0x10018f01
mov dword [ebp - 0x20], 0xec2e0cf5
cmp dword [ebp - 0x18], 0x5a31
jge 0x10018f6e
push str.hhnpwg_srjijo_yrfprycwp_bopnwp_ykqn_kzacgtahp_hrxtyi_opc_wfmqbxxr_xkjfqamf_rue_hvzm
call fcn.1003e6f6
pop ecx
or dword [ebp - 4], 0xffffffff
mov edx, 0x2e26
push ecx
mov dword [ebp - 0x1c], 0x374c7af5
mov ecx, 0x334f
call fcn.10017c39
lea eax, [ebp - 0x1c]
mov ecx, 0x2540
push 0x246a
push eax
lea edx, [ebp - 0x20]
call fcn.1001735d
mov dword [ebp - 0x18], 0x1706
add esp, 0xc
cmp dword [ebp - 0x18], 0x1932
jle 0x10018fe6
xor esi, esi
xor edi, edi
xor ebx, ebx
mov eax, ebx
mov ecx, 0x1006f958
or eax, edi
or eax, esi
cdq
push edx
push eax
call fcn.10001c9b
inc ebx
cmp ebx, 0x4827
jl 0x10018fb8
inc edi
cmp edi, 0x5ccd
jl 0x10018fb6
inc esi
cmp esi, 0x6640
jl 0x10018fb4
mov dword [ebp - 4], 2
cmp dword [ebp - 0x18], 0x1438
jge 0x10019005
mov edx, str.niill_zbpiewwm_ieb_rif_amn_bbxl_ulivj_jurno_xxtmthe_rqmgp_ptwthjw
mov ecx, 0x1006f958
call fcn.1000366a
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], 0
jmp 0x10019041
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x30], 0x9f9b
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10019033
mov dword [ebp - 0x18], 1
cmp dword [ebp - 0x18], 0
jl 0x10019087
mov dword [ebp - 0x14], 0xf506e60b
mov dword [ebp - 0x14], 0
jmp 0x1001907c
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + eax*4 - 0x30]
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x30], ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x30]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 1
jle 0x10019064
dec dword [ebp - 0x18]
jns 0x10019054
cmp byte [0x10070ce1], 0
jne 0x100190a7
mov edx, 0x10070de0
xor cl, cl
call fcn.1001833c
sub esp, 0xc
call fcn.10017462
add esp, 0xc
mov eax, dword [0x10070de0]
cmp eax, 0x270
jne 0x100190f3
mov edx, 0x10070de8
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, 0x100717a8
jl 0x100190b8
jmp 0x100190ff
cmp eax, 0x4e0
jb 0x10019104
call fcn.10019ec5
mov eax, dword [0x10070de0]
mov ecx, dword [eax*4 + 0x10070de4]
inc eax
mov dword [0x10070de0], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x10072164]
xor ecx, eax
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 eax, ecx
shr eax, 0x12
xor eax, ecx
mov ecx, dword [ebp - 0x24]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret