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

Disassembly:
mov eax, 0x1005f1fa
call fcn.1005e6e0
sub esp, 0xb4
cmp byte [ebp + 0xc], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov byte [ebp - 0x3c], cl
je 0x10014ede
cmp byte [edx], 0
je 0x10014ecd
push 0x1ef4
push 0x7256
push 1
push 0x858
xor dl, dl
mov cl, 1
call fcn.10016451
add esp, 0x10
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret
test cl, cl
je 0x10014ef4
mov eax, dword [ebp + 8]
cmp byte [eax], 0
je 0x10014ecd
push 0
call dword [sym.imp.USER32.dll_DestroyAcceleratorTable]
jmp 0x10014ecd
mov dword [ebp - 0x14], 0xfffffffe
xor ebx, ebx
mov dword [ebp - 0x20], 0x270f9e3
xor ecx, ecx
mov dword [ebp - 0x24], 0x2522abf7
inc ecx
mov dword [ebp - 0x24], 0x40dfe9f4
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x24], 0x509b9552
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x1c], ebx
jmp 0x10014f35
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x50], 0x93bd5de1
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], ecx
jl 0x10014f27
cmp dword [ebp - 0x14], ebx
je 0x10014f48
dec dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x50]
xor edx, edx
mov dword [ebp - 0x50], 0xf7d9
mov eax, dword [ebp - 0x14]
cmp eax, 0x1585d
mov eax, dword [ebp - 0x14]
setne dl
xor ecx, ecx
cmp edx, eax
setge cl
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x24]
neg eax
sbb eax, eax
xor edx, edx
neg eax
cmp eax, 0xffffffff
mov eax, dword [ebp - 0x14]
setge dl
xor ecx, ecx
cmp edx, eax
setle cl
xor esi, esi
mov dword [ebp - 0x24], ecx
inc esi
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0x28], eax
mov edx, esi
mov dword [ebp - 0x24], 0xa1c1
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
sub edx, eax
mov eax, dword [ebp - 0x14]
cmp eax, edx
setne cl
imul eax, ecx, 0xf1e2
cmp eax, 0x91f199e1
sbb eax, eax
neg eax
imul eax, dword [ebp - 0x14]
mov dword [ebp - 0x28], eax
mov eax, dword [0x11092264]
test al, 1
jne 0x10015011
or eax, esi
mov ecx, 0x1571
or dword [0x110935f4], 0xffffffff
mov edx, esi
mov dword [0x11092264], eax
mov edi, 0x270
mov dword [0x11092274], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x11092274], ecx
inc edx
cmp edx, edi
jl 0x10014ff0
mov dword [0x11092270], edi
mov dword [ebp - 0x18], 0x3099cfe0
mov dword [ebp - 0x20], 0x7c422d5f
mov dword [ebp - 0x28], 0x9305
mov dword [ebp - 0x1c], ebx
jmp 0x10015039
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x4c], 0xf07b4bc6
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 3
jl 0x1001502b
mov ecx, dword [ebp - 0x18]
xor edx, edx
mov eax, dword [ebp - 0x18]
cmp ecx, eax
setge dl
sub edx, dword [ebp - 0x18]
je 0x10015058
mov eax, esi
cmp dword [ebp - 0x18], ebx
jne 0x1001505a
mov eax, ebx
push 2
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x18], ebx
pop edi
jmp 0x1001511b
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x2c], 0xcaf1e2cd
mov dword [ebp - 0x14], ebx
jmp 0x10015085
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x68], 0x520f3038
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x10015077
mov dword [ebp - 0x14], ebx
jmp 0x1001509d
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x58], 0xdefcecb2
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x1001508f
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x1c], 0xd06721f7
cmp dword [ebp - 0x48], ebx
jne 0x100150b4
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
xor edx, edx
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x4c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x4c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x4c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x4c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x4c]
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x64], ecx
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x4c]
cmp ecx, eax
mov eax, dword [ebp - 0x18]
setne dl
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x4c]
cmp edx, eax
setl cl
mov dword [ebp - 0x2c], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x1c]
cmp eax, 0x74006310
setg cl
mov dword [ebp - 0x58], ecx
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jle 0x10015068
mov dword [ebp - 0x18], 0x1e53
cmp dword [ebp - 0x18], 0x1fe5
jle 0x100151c5
mov dword [ebp - 0x20], ebx
mov eax, ebx
mov dword [ebp - 0x1c], ebx
mov edi, ebx
mov dword [ebp - 0x14], ebx
mov ecx, edi
mov edx, ebx
mov edi, dword [ebp - 0x20]
shl eax, cl
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], eax
xor eax, edx
lea ecx, [ebp - 0x8c]
xor eax, edi
cdq
push edx
push eax
call fcn.10001a55
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10015170
mov eax, dword [eax]
push eax
call fcn.10047d34
pop ecx
push ebx
push esi
lea ecx, [ebp - 0x8c]
call fcn.10002050
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x28]
inc edx
mov dword [ebp - 0x24], edx
cmp edx, 0x4523
jl 0x10015154
mov edi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
inc edi
mov dword [ebp - 0x14], edi
cmp edi, 0x5ee6
jl 0x10015145
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, 0x2f5e
jl 0x10015140
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x29ac
jl 0x1001513b
push 0x110921ea
push ebx
push ecx
push 0x11092270
call fcn.100147f8
add esp, 0x10
cmp dword [ebp - 0x18], 0x1e39
jge 0x100151ed
push str.bcgj_pqp_wwyldlx_mnjwwg_ytif_rcspc_ppntq_psflliv_mlh_pgyo_juiz
call fcn.10047d34
pop ecx
or dword [ebp - 4], 0xffffffff
xor edx, edx
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x24], 0x9124c6e1
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], esi
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x18]
cmp eax, 0x1fb9
setne dl
xor ecx, ecx
sub edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp eax, edx
setle cl
imul eax, ecx, 0x4b26
sub eax, dword [ebp - 0x20]
neg eax
sbb eax, eax
inc eax
jns 0x10015278
push 0x2596
lea eax, [ebp + 0xf]
mov byte [ebp + 0xf], bl
push 0x3de9
push eax
xor dl, dl
call fcn.10014837
jmp 0x10015498
mov dword [ebp - 0x1c], 0xffff
mov dword [ebp - 0x54], 0x2ee8b720
mov dword [ebp - 0x28], 0x2254
cmp dword [ebp - 0x28], 0x2602
jle 0x1001531d
push ebx
push ebx
push 0x18f8
push ebx
push 0x1e84
push ebx
push 0xf31
push 0xdf9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov edx, ebx
mov dword [ebp - 0x14], ebx
mov edi, ebx
mov ecx, ebx
mov dword [ebp - 0x2c], ebx
mov eax, edi
shl eax, cl
lea ecx, [ebp - 0xa4]
or eax, edx
cdq
push edx
push eax
call fcn.10001a55
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x100152e2
mov eax, dword [eax]
push eax
call fcn.10047d34
pop ecx
push ebx
push esi
lea ecx, [ebp - 0xa4]
call fcn.10002050
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x2c], ecx
cmp ecx, 0x2970
jl 0x100152c4
inc edi
cmp edi, 0x5c64
jl 0x100152bf
inc edx
mov dword [ebp - 0x14], edx
cmp edx, 0x1fbc
jl 0x100152bd
mov dword [ebp - 0x14], ebx
jmp 0x10015330
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x60], 9
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10015322
cmp dword [ebp - 0x28], 0x21d3
jge 0x1001534a
push str.vwhkwozfl_ftoeoj_cwz_vygs
call fcn.10047d34
pop ecx
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x14], ebx
jmp 0x10015361
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x74], 0xb8a8
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x10015353
mov dword [ebp - 0x28], 0x147c
cmp dword [ebp - 0x28], 0x448
jge 0x100153dc
push 0x25e64
push 0xffffffffffffffff
push 0x1007bcb0
call fcn.10044200
add esp, 0xc
mov edi, 0x10067b0c
jmp 0x100153c9
xor edx, edx
mov ecx, eax
call fcn.10014e1b
push eax
cmp eax, 0xa
jge 0x100153a8
push str.197_d
jmp 0x100153b7
cmp eax, 0xc5
jge 0x100153b6
push str.00_d
jmp 0x100153b7
push edi
call fcn.10047d34
pop ecx
pop ecx
push 0x10069f1c
call fcn.10047d34
pop ecx
lea eax, [ebp - 0x40]
push eax
push edi
call fcn.1004811d
mov eax, dword [ebp - 0x40]
pop ecx
pop ecx
test eax, eax
jne 0x10015392
push ecx
call fcn.10015b44
pop ecx
cmp dword [ebp - 0x1c], ebx
je 0x100153ef
mov edx, esi
cmp dword [ebp - 0x18], ebx
jne 0x100153f1
mov edx, ebx
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
sub ecx, eax
mov dword [ebp - 0x14], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x14]
cmp eax, edx
setne cl
sub ecx, dword [ebp - 0x20]
add ecx, dword [ebp - 0x20]
je 0x10015411
mov eax, dword [ebp - 0x24]
imul eax, dword [ebp - 0x54], 0x2bb1
sub eax, 0x4a5bf585
je 0x10015476
mov dword [ebp - 0x20], 0x9c94
xor edx, edx
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
cmp eax, ecx
setl dl
cmp edx, 0xe821
jle 0x1001544c
cmp dword [ebp - 0x14], ebx
jne 0x1001544f
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
xor edx, edx
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x60]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x70]
imul ecx, eax, 0xf60
mov eax, dword [ebp - 0x5c]
cmp ecx, eax
setne dl
mov dword [ebp - 0x14], edx
jmp 0x1001549b
mov byte [ebp - 0x2d], bl
cmp byte [ebp - 0x2d], bl
je 0x1001549b
push 0x7199
push 0x3d28
push ebx
mov edx, 0x6ef8
mov ecx, 0x7060
call fcn.10015a09
add esp, 0xc
lea eax, [ebp - 0x34]
xor dl, dl
push eax
push ecx
call fcn.10014951
mov dword [ebp - 0x38], 0x1f48
cmp dword [ebp - 0x38], 0x222e
pop ecx
pop ecx
jle 0x1001551b
mov edi, ebx
mov eax, ebx
mov dword [ebp - 0x24], ebx
mov ecx, ebx
mov dword [ebp - 0x28], ebx
add eax, ecx
lea ecx, [ebp - 0xbc]
and eax, edi
cdq
push edx
push eax
call fcn.10001a55
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x100154e1
mov eax, dword [eax]
push eax
call fcn.10047d34
pop ecx
push ebx
push esi
lea ecx, [ebp - 0xbc]
call fcn.10002050
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, 0x726f
jl 0x100154c5
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 0x516b
jl 0x100154c0
inc edi
cmp edi, 0x1e73
jl 0x100154bb
mov dword [ebp - 0x2c], 0x605
cmp dword [ebp - 0x2c], 0x85e
jle 0x1001557d
mov esi, ebx
mov dword [ebp - 0x28], ebx
mov edi, ebx
mov dword [ebp - 0x34], esi
mov dword [ebp + 0xc], 0x1d3
mov dword [ebp - 0x34], ebx
mov ecx, ebx
mov eax, esi
sar eax, cl
mov ecx, 0x1007ab78
cdq
push edx
push eax
call fcn.10001bfe
inc ebx
cmp ebx, 0x52c6
jl 0x1001553f
add esi, edi
dec dword [ebp + 0xc]
push 0
pop ebx
jne 0x1001553c
mov esi, dword [ebp - 0x28]
inc edi
cmp edi, 0x501c
jl 0x10015532
inc esi
mov dword [ebp - 0x28], esi
cmp esi, 0x35ac
jl 0x10015530
mov eax, dword [0x11092270]
cmp eax, 0x270
jne 0x100155c9
mov edx, 0x11092278
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, 0x11092c38
jl 0x1001558e
jmp 0x100155d5
cmp eax, 0x4e0
jb 0x100155da
call fcn.100176c5
mov eax, dword [0x11092270]
mov ecx, dword [eax*4 + 0x11092274]
inc eax
mov dword [0x11092270], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x110935f4]
xor ecx, eax
mov dword [ebp - 4], 4
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, dword [ebp + 0x10]
mov edx, ecx
shr edx, 0x12
xor edx, ecx
cmp dword [ebp - 0x2c], 0x53d
mov dword [eax], edx
jge 0x10014ecd
mov edx, str.gagx_qktgjtznj_ywvupzh_bvqvgjumd_qqowqnlaq
mov ecx, 0x1007ab78
call fcn.100039fb
jmp 0x10014ecd