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

Disassembly:
mov eax, 0x10062dbc
call fcn.10062638
sub esp, 0xbc
push ebx
xor ebx, ebx
push esi
push edi
inc ebx
mov dword [ebp - 0x10], esp
cmp byte [ebp + 0xc], 0
je 0x100046aa
mov dword [ebp - 0x40], 0xbf8f0aa6
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x44], 0x65720b96
push ebx
call fcn.10004f00
lea eax, [ebp - 0x60]
xor esi, esi
push eax
push ebx
push 0x5d7a
push ecx
lea edx, [ebp - 0x54]
mov dword [ebp - 4], esi
mov ecx, 0x2b95
call fcn.10002aac
add esp, 0x10
mov edx, 0x7f87
mov ecx, 0x8f8
push ebx
push 0x1bf2
push 0x5410
push 0x2c7
sub esp, 0x10
call fcn.10002bbc
add esp, 0x18
lea eax, [ebp - 0x44]
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0x40]
push esi
push 0x3ec4
push eax
call fcn.10002d99
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x60]
add esp, 0x14
call fcn.10004f62
mov dword [ebp - 0x18], 0x5c9c
cmp dword [ebp - 0x18], 0x5cc5
jle 0x1000468d
push 0x123a
push esi
push 0x7a8
push esi
push 0x2586
push esi
call dword [sym.imp.KERNEL32.dll_CompareStringW]
mov edi, esi
mov ecx, esi
mov dword [ebp - 0x24], esi
mov eax, edi
shl eax, cl
lea ecx, [ebp - 0x98]
cdq
push edx
push eax
call fcn.10001a65
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10004661
mov eax, dword [eax]
push eax
call fcn.1004a373
pop ecx
push esi
push ebx
lea ecx, [ebp - 0x98]
call fcn.10005270
mov ecx, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, 0x5109
jl 0x10004645
inc edi
cmp edi, 0x2bf7
jl 0x10004640
cmp dword [ebp - 0x18], 0x5926
jge 0x10004bbe
push str.sndnontx_wjyzv_yoorruc_gjhifqdl
call fcn.1004a373
pop ecx
jmp 0x10004bbe
xor esi, esi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x14], esi
jmp 0x100046c2
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x28], 0x558b
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ebx
jl 0x100046b4
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x1c], 0xfffffff7
jmp 0x100047c2
mov dword [ebp - 0x14], 0x14c405b4
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], esi
jmp 0x100047b6
push 2
lea ecx, [ebp - 0x3c]
call fcn.10004f00
mov dword [ebp - 0x18], 0xa8551b32
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x18], esi
jmp 0x10004714
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x3c]
mov dword [eax + ecx*4], 0xfffffffb
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jl 0x10004704
mov eax, dword [ebp - 0x3c]
mov dword [eax], esi
mov eax, dword [ebp - 0x14]
xor edx, edx
mov ecx, dword [ebp + eax*4 - 0x28]
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax]
mov dword [ebp + eax*4 - 0x28], ecx
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
test eax, eax
mov eax, dword [ebp - 0x14]
setle dl
xor ecx, ecx
cmp eax, edx
setg cl
xor edx, edx
mov dword [ebp - 0x18], ecx
imul ecx, dword [ebp - 0x18], 0x5d36
add ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x3c]
cmp ecx, dword [eax]
mov eax, dword [ebp - 0x14]
setl dl
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x28]
sub edx, eax
mov eax, dword [ebp - 0x1c]
cmp eax, edx
mov eax, dword [ebp - 0x3c]
setge cl
cmp ecx, dword [eax]
jge 0x10004784
mov eax, ebx
cmp dword [ebp - 0x28], esi
jne 0x10004786
mov eax, esi
xor edx, edx
test eax, eax
mov eax, dword [ebp - 0x14]
setle dl
xor ecx, ecx
cmp edx, eax
setl cl
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x3c]
dec dword [eax]
jns 0x1000471f
lea ecx, [ebp - 0x3c]
call fcn.10004f62
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jle 0x100046eb
dec dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0xfffffff5
jle 0x100046d9
mov dword [ebp - 0x20], 0x481a
cmp dword [ebp - 0x20], 0x48fc
jle 0x1000486e
mov edi, esi
mov dword [ebp - 0x2c], esi
mov eax, esi
mov dword [ebp - 0x30], esi
mov edx, esi
mov dword [ebp - 0x18], edi
mov ecx, eax
mov dword [ebp - 0x14], edx
sar edi, cl
mov ecx, edx
mov dword [ebp - 0x1c], 0x15e2
mov dword [ebp - 0x18], ecx
mov eax, edi
and eax, ecx
lea ecx, [ebp - 0xb0]
cdq
push edx
push eax
call fcn.10001a65
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1000481e
mov eax, dword [eax]
push eax
call fcn.1004a373
pop ecx
push esi
push ebx
lea ecx, [ebp - 0xb0]
call fcn.10005270
mov ecx, dword [ebp - 0x18]
dec ecx
dec dword [ebp - 0x1c]
mov dword [ebp - 0x18], ecx
jne 0x10004802
mov edx, dword [ebp - 0x14]
inc edx
mov dword [ebp - 0x14], edx
cmp edx, 0x4907
jl 0x100047f6
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp - 0x2c]
inc eax
mov dword [ebp - 0x30], eax
cmp eax, 0x7f30
jl 0x100047ea
inc edi
mov dword [ebp - 0x2c], edi
cmp edi, 0x4fef
jl 0x100047e5
mov eax, dword [0x100e109c]
test al, 1
jne 0x100048bb
or eax, ebx
mov ecx, 0x1571
or dword [0x100e2434], 0xffffffff
mov edx, ebx
mov dword [0x100e109c], eax
mov dword [0x100e10b4], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x100e10b4], ecx
inc edx
cmp edx, 0x270
jl 0x10004892
mov dword [0x100e10b0], 0x270
cmp dword [ebp - 0x20], 0x469a
jge 0x100048cf
push str.gvq_pkhmwog_nhbhwju_phhycmv_rvoi_flhuudjch_ulktm_wmwbwgh
call fcn.1004a373
pop ecx
or dword [ebp - 4], 0xffffffff
cmp byte [0x1007f408], 0
jne 0x10004942
push ecx
push 0x233c
xor cl, cl
call fcn.100026d6
pop ecx
pop ecx
push 0x100e10b0
sub esp, 0xc
xor dl, dl
mov ecx, 0x3da5
call fcn.10002cdb
push 0x6310
push ebx
push esi
push 0x52a6
push 0xfbf
xor dl, dl
mov ecx, 0x5b45
call fcn.10004095
add esp, 0x1c
mov edx, 0x3db6
push 0x5282
push 0x1007f408
push ecx
push 0x6d4f
push ebx
mov ecx, 0x32ea
call fcn.10001a9d
add esp, 0x1c
mov dword [ebp - 0x1c], 0xf782a183
mov dword [ebp - 0x20], 0xd2a
cmp dword [ebp - 0x20], 0xdc1
jle 0x10004983
mov edi, esi
mov ebx, esi
mov eax, ebx
mov ecx, 0x1007e2d8
and eax, edi
cdq
push edx
push eax
call fcn.10004c4e
inc ebx
cmp ebx, 0x5516
jl 0x1000495d
inc edi
cmp edi, 0x64da
jl 0x1000495b
xor ebx, ebx
inc ebx
mov dword [ebp - 4], 5
cmp dword [ebp - 0x20], 0xa80
jge 0x100049a2
mov edx, str.qugpexr_msm_zvytootjd_jwjeqq_rapavhev_lvsbbj_sqqhofgbq_byeldei_nhzcolsfr_gdehyjg_drw_hohelma_bthi_hpxa
mov ecx, 0x1007e2d8
call fcn.1000714a
or dword [ebp - 4], 0xffffffff
push dword [ebp - 0x54]
movdqa xmm0, xmmword [0x10071380]
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x70]
mov dword [ebp - 0x50], esi
push eax
push esi
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x4c], esi
movdqu xmmword [ebp - 0x70], xmm0
mov dword [ebp - 0x48], esi
call fcn.100076b8
mov dword [ebp - 4], 7
mov dword [ebp - 0x14], 0xffff
mov dword [ebp - 0x24], 0x5a44
mov dword [ebp - 0x20], 0x2a67f8b4
mov dword [ebp - 0x20], 3
mov dword [ebp - 0x18], esi
jmp 0x10004a2b
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x80], 0xffffffff
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 4
jl 0x10004a1d
cmp dword [ebp - 0x1c], esi
jne 0x10004a47
mov eax, dword [ebp - 0x1c]
mov ecx, esi
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x74], 0xcb61
jmp 0x10004a49
mov ecx, ebx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], esi
je 0x10004a5b
mov edx, ebx
cmp dword [ebp - 0x14], esi
jne 0x10004a5d
mov edx, esi
mov eax, dword [ebp - 0x50]
push 0x5fab
mov dword [eax], ecx
mov eax, dword [ebp - 0x14]
imul eax, edx
xor edx, edx
sub eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
sub ecx, eax
mov eax, dword [ebp - 0x14]
cmp ecx, eax
mov eax, dword [ebp - 0x14]
setg dl
xor ecx, ecx
cmp edx, eax
mov dl, bl
setne cl
sub esp, 0xc
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x24]
call fcn.10002cdb
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x50]
add esp, 0x10
call fcn.10004f62
mov eax, dword [0x100e10b0]
cmp eax, 0x270
jne 0x10004afd
mov edx, 0x100e10b8
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, 0x100e1a78
jl 0x10004ac2
jmp 0x10004b09
cmp eax, 0x4e0
jb 0x10004b0e
call fcn.1000561d
mov eax, dword [0x100e10b0]
mov edx, dword [eax*4 + 0x100e10b4]
inc eax
mov dword [0x100e10b0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x100e2434]
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 + 0x10]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov dword [ebp - 0x20], 0x47a5
cmp dword [ebp - 0x20], 0x4a5e
jle 0x10004bbe
mov edi, esi
mov eax, esi
mov dword [ebp - 0x24], esi
mov ecx, esi
mov dword [ebp - 0x20], esi
add eax, edi
sar eax, cl
lea ecx, [ebp - 0xc8]
cdq
push edx
push eax
call fcn.10001a65
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10004b84
mov eax, dword [eax]
push eax
call fcn.1004a373
pop ecx
push esi
push ebx
lea ecx, [ebp - 0xc8]
call fcn.10005270
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x20], ecx
cmp ecx, 0x328a
jl 0x10004b68
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 0x5422
jl 0x10004b63
inc edi
cmp edi, 0x5ba7
jl 0x10004b5e
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret