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

Disassembly:
mov eax, 0x100587f7
call fcn.10056ec8
sub esp, 0x8c
cmp byte [ebp + 0xc], 0
push ebx
push esi
push edi
mov dword [ebp - 0x34], ecx
je 0x100370d4
xor eax, eax
mov dword [ebp - 0x14], 0xd3c891c5
inc eax
mov dword [ebp - 0x10], 0xfffffffb
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x4c]
push 4
mov dword [ebp - 0x18], eax
call fcn.10011bd7
xor ebx, ebx
mov dword [ebp - 0x10], 5
xor ecx, ecx
mov dword [ebp - 0x10], ebx
inc ecx
cmp dword [ebp - 0x10], ecx
jge 0x10037048
push 3
pop edi
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x30], edi
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], ecx
jl 0x10037039
mov dword [ebp - 0x10], ebx
jmp 0x1003705d
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x4c]
mov dword [eax + ecx*4], 0xfffffffa
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 4
jl 0x1003704d
mov eax, dword [ebp - 0x14]
imul eax, dword [ebp - 0x14]
imul eax, dword [ebp - 0x14]
add eax, 0xffffe255
mov dword [ebp - 0x30], eax
cmp eax, dword [ebp - 0x14]
jle 0x1003707e
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x30]
xor edx, edx
mov eax, dword [ebp - 0x14]
cmp ecx, eax
setg dl
cmp edx, dword [ebp - 0x14]
jge 0x10037098
cmp dword [ebp - 0x14], ebx
jne 0x10037098
mov dword [ebp - 0x18], ebx
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x10], ebx
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], esi
mov ecx, dword [ebp - 0x10]
imul ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x4c]
mov dword [eax + 0xc], ecx
lea ecx, [ebp - 0x4c]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], 0xd7d04549
call fcn.10011c39
jmp 0x10037575
mov eax, dword [0x102dbce4]
xor ecx, ecx
inc ecx
mov ebx, 0x270
test cl, al
jne 0x10037121
or eax, ecx
mov edx, 0x1571
or dword [0x102dd084], 0xffffffff
mov esi, ecx
mov dword [0x102dbce4], eax
mov dword [0x102dbd04], edx
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, esi
mov dword [esi*4 + 0x102dbd04], edx
inc esi
cmp esi, ebx
jl 0x10037100
mov dword [0x102dbd00], ebx
xor ebx, ebx
mov dword [ebp - 0x14], 0xf2c29a3d
mov dword [ebp - 0x10], ebx
jmp 0x1003713d
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x20], 0xaf1124f0
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], ecx
jl 0x1003712f
lea eax, [ebp - 0x21]
mov byte [ebp - 0x21], bl
push eax
push 0x6f77
push ebx
push 0x51f2
push ecx
push ebx
mov edx, 0x1252
mov ecx, 0x702c
call fcn.10037839
add esp, 0x18
mov dword [ebp - 0x14], ebx
jmp 0x10037254
mov dword [ebp - 0x1c], 0xffffffff
xor edx, edx
mov dword [ebp - 0x18], 0x376fbfcc
inc edx
mov dword [ebp - 0x18], 0x56e623b2
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x1c], ebx
jmp 0x1003723a
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x18], 0xfffffff6
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
mov eax, dword [ebp + eax*4 - 0x20]
cmp edx, eax
mov eax, dword [ebp - 0x1c]
setne cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x14]
setne dl
mov eax, dword [ebp + eax*4 - 0x20]
sub edx, eax
mov eax, dword [ebp - 0x20]
sub eax, edx
neg eax
sbb eax, eax
inc eax
sub eax, 0x3e8c
jne 0x100371ee
mov eax, dword [ebp - 0x14]
cmp dword [ebp + eax*4 - 0x20], ebx
jne 0x100371ee
xor edx, edx
mov esi, ebx
inc edx
jmp 0x100371f3
xor edx, edx
inc edx
mov esi, edx
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp eax, esi
setne cl
add ecx, dword [ebp - 0x20]
je 0x10037209
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x20]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x20], ebx
jne 0x10037243
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], ebx
jle 0x10037193
sub esp, 0xc
lea ecx, [ebp - 0x1c]
call fcn.1003892a
add esp, 0xc
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ebx
jle 0x10037170
push 3
pop edi
cmp byte [0x102dbb2f], bl
jne 0x100373e1
push ebx
push 0x1a19
push 0x570e
push 0x6117
push 0x102dbd00
mov edx, 0x276
call fcn.10037642
mov dword [ebp - 0x10], 0x6a16
add esp, 0x14
cmp dword [ebp - 0x10], 0x6c2d
jle 0x100372ea
xor esi, esi
mov edi, ebx
inc esi
mov eax, ebx
mov dword [ebp - 0x18], ebx
and eax, edi
lea ecx, [ebp - 0x80]
cdq
push edx
push eax
call fcn.10001ba3
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x100372bf
mov eax, dword [eax]
push eax
call fcn.100410e1
pop ecx
push ebx
push esi
lea ecx, [ebp - 0x80]
call fcn.100122d9
mov eax, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, 0x491a
jl 0x100372a8
inc edi
cmp edi, 0x3a36
jl 0x100372a3
push 3
pop edi
cmp dword [ebp - 0x10], 0x6683
jge 0x100372fe
push str.ccxblnxf_hki_crrljag_neha_vhudshhn_hmg
call fcn.100410e1
pop ecx
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x58]
push 4
call fcn.10011bd7
push 0x5072
lea eax, [ebp - 0x5c]
mov dword [ebp - 4], 2
push eax
push ebx
xor eax, eax
mov dword [ebp - 0x10], 0xfffffff9
inc eax
mov dword [ebp - 0x18], 0x8c7b5c6e
push 0x4c51
push eax
push eax
mov edx, 0x70dc
lea ecx, [ebp - 0x58]
call fcn.10037839
mov dword [ebp - 0x10], edi
add esp, 0x18
cmp dword [ebp - 0x10], ebx
jl 0x1003736f
push ecx
xor cl, cl
call fcn.1003770d
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
pop ecx
mov ecx, dword [ebp - 0x58]
mov eax, dword [ecx + eax*4]
mov dword [ecx + edx*4], eax
dec dword [ebp - 0x10]
jns 0x1003734d
cmp dword [ebp - 0x10], ebx
je 0x100373c5
mov dword [ebp - 0x18], 0xfffffff8
mov dword [ebp - 0x14], 0x7e780ca9
cmp dword [ebp - 0x10], ebx
jne 0x10037398
mov dword [ebp - 0x10], 0xee6d058a
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], ebx
jne 0x10037398
mov esi, ebx
jmp 0x1003739b
xor esi, esi
inc esi
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x14], ebx
jmp 0x100373be
push 0x1015
xor dl, dl
mov ecx, 0x7125
call fcn.10037814
inc dword [ebp - 0x14]
pop ecx
cmp dword [ebp - 0x14], edi
jle 0x100373a9
jmp 0x100373ce
push ecx
mov cl, 1
call fcn.1003770d
pop ecx
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x58]
call fcn.10011c39
mov byte [0x102dbb2f], 1
mov dword [ebp - 0x2c], 2
lea ecx, [ebp - 0x40]
push 1
call fcn.10011bd7
mov dword [ebp - 4], edi
mov dword [ebp - 0x18], 0x97a61eef
mov dword [ebp - 0x28], ebx
jmp 0x1003740f
mov eax, dword [ebp - 0x28]
mov dword [ebp + eax*4 - 0x68], 0xeac8b13e
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], edi
jl 0x10037401
push ecx
push ecx
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x40]
call fcn.10038398
add esp, 0xc
mov dword [ebp - 0x2c], 2
cmp dword [ebp - 0x2c], ebx
jl 0x100374bf
mov dword [ebp - 0x10], 0x593c
cmp dword [ebp - 0x10], 0x5cd5
jle 0x10037496
mov esi, ebx
mov dword [ebp - 0x18], ebx
mov edi, esi
mov esi, 0x7151
mov eax, edi
lea ecx, [ebp - 0x98]
cdq
push edx
push eax
call fcn.10001ba3
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1003746b
mov eax, dword [eax]
push eax
call fcn.100410e1
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x98]
call fcn.100122d9
dec edi
dec esi
jne 0x10037451
mov esi, dword [ebp - 0x18]
inc esi
mov dword [ebp - 0x18], esi
cmp esi, 0x331b
jl 0x1003744a
push 3
pop edi
mov eax, dword [ebp - 0x2c]
cmp dword [ebp + eax*4 - 0x68], ebx
jne 0x100374bf
cmp dword [ebp - 0x10], 0x57e6
jge 0x100374b3
push str.bllthhq_qjsn_lvdpbtev_uuhsvze_lysnqk_ucvxan_itpravx_krpednb_niyeu_sifpoia_thxlaouve
call fcn.100410e1
pop ecx
mov dword [ebp - 4], edi
dec dword [ebp - 0x2c]
jns 0x10037435
lea eax, [ebp - 0x2c]
push eax
push ecx
lea eax, [ebp - 0x40]
push eax
push ecx
push ecx
call fcn.100377d3
add esp, 0x14
lea ecx, [ebp - 0x40]
call fcn.10011c39
mov eax, dword [0x102dbd00]
cmp eax, 0x270
jne 0x10037526
mov edx, 0x102dbd08
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, 0x102dc6c8
jl 0x100374eb
jmp 0x10037532
cmp eax, 0x4e0
jb 0x10037537
call fcn.100391e8
mov eax, dword [0x102dbd00]
mov ecx, dword [eax*4 + 0x102dbd04]
inc eax
mov dword [0x102dbd00], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x102dd084]
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 - 0x34]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret