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

Disassembly:
mov eax, 0x1005d921
call fcn.1005c588
sub esp, 0xd0
cmp byte [ebp + 0xc], 0
push ebx
push esi
push edi
mov esi, ecx
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x48], esi
je 0x1002ac1d
mov eax, dword [ebp + 0x10]
cmp byte [eax], 0
je 0x1002b27b
push 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
jmp 0x1002b27b
push 2
lea ecx, [ebp - 0x94]
mov dword [ebp - 0x58], esi
call fcn.1000ddb2
push ecx
lea eax, [ebp - 0x94]
xor ebx, ebx
mov dword [ebp - 4], ebx
lea edx, [ebp - 0xa8]
mov dword [ebp - 0x30], 5
push eax
call fcn.1002b414
pop ecx
pop ecx
push 0x2dd4
push ecx
lea eax, [ebp - 0x30]
xor dl, dl
push eax
push 0x79d0
push ecx
lea ecx, [ebp - 0x94]
call fcn.1002ab8b
add esp, 0x14
mov dword [ebp - 0x30], 1
cmp dword [ebp - 0x30], ebx
jl 0x1002ac86
mov cl, 1
call fcn.1002aa56
dec dword [ebp - 0x30]
jns 0x1002ac7a
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x94]
call fcn.1000de35
mov eax, dword [0x10171a78]
test al, 1
jne 0x1002ace4
or dword [0x10172e14], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x10171a78], eax
xor edx, edx
mov dword [0x10171a94], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x10171a94], ecx
inc edx
cmp edx, 0x270
jl 0x1002acbb
mov dword [0x10171a90], 0x270
push 2
lea ecx, [ebp - 0x88]
call fcn.1000ddb2
lea eax, [ebp - 0x88]
mov dword [ebp - 4], 1
push eax
lea eax, [ebp - 0xa4]
mov dword [ebp - 0x3c], 0xbb743d83
push eax
mov dword [ebp - 0x70], 0x69ec4279
mov ecx, 0x24eb
mov dword [ebp - 0x40], 0xfffffffd
push 0x4921
call fcn.1002b671
add esp, 0xc
mov dword [ebp - 0x3c], 1
cmp dword [ebp - 0x3c], ebx
jl 0x1002ad73
push ebx
push 1
lea eax, [ebp - 0x40]
mov dword [ebp - 0x4c], 0xe96673e7
push eax
lea eax, [ebp - 0x70]
xor dl, dl
push eax
mov ecx, 0x557a
call fcn.1002b615
add esp, 0xc
lea eax, [ebp - 0x4c]
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x88]
push eax
call fcn.1002b28c
dec dword [ebp - 0x3c]
pop ecx
pop ecx
jns 0x1002ad39
push ecx
push ecx
lea eax, [ebp - 0x40]
push eax
call fcn.1002cec8
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x88]
add esp, 0xc
call fcn.1000de35
cmp byte [0x101718ec], 0
jne 0x1002aeab
mov dword [ebp - 0x38], 1
mov dword [ebp - 0x38], 0x3f23e93d
mov dword [ebp - 0x38], 0xfffd
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x1002adc2
xor cl, cl
call fcn.1002aa56
push 1
push 1
push 0x4046
push 0xd86
xor dl, dl
mov ecx, 0x121f
call fcn.1002b615
pop ecx
pop ecx
call fcn.1002c6f2
mov dword [ebp - 0x20], 0x15d4
cmp dword [ebp - 0x20], 0x15ee
pop ecx
pop ecx
jle 0x1002ae7f
push 0x6d1
push 1
push 0xb00
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov edx, ebx
mov dword [ebp - 0x14], ebx
mov edi, ebx
mov esi, ebx
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
mov eax, esi
sar eax, cl
lea ecx, [edi + edx]
or eax, ecx
lea ecx, [ebp - 0xc4]
cdq
push edx
push eax
call fcn.10001abf
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1002ae3a
mov eax, dword [eax]
push eax
call fcn.10044453
pop ecx
push ebx
push 1
lea ecx, [ebp - 0xc4]
call fcn.1000e569
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, 0x5030
jl 0x1002ae19
inc esi
cmp esi, 0x619
jl 0x1002ae14
inc edi
cmp edi, 0x6f16
jl 0x1002ae12
inc edx
mov dword [ebp - 0x14], edx
cmp edx, 0x5a1c
jl 0x1002ae10
cmp dword [ebp - 0x20], 0x1439
jge 0x1002ae93
push str.hwzjv_lidjo_obdtyjf_cmcxpoa_urvywlxw_rhxdp_aweidy
call fcn.10044453
pop ecx
or dword [ebp - 4], 0xffffffff
push ecx
push ebx
push 0x101718ec
mov ecx, 0x17b2
call fcn.1002aa9d
add esp, 0xc
push 1
lea ecx, [ebp - 0x6c]
call fcn.1000ddb2
lea eax, [ebp - 0xac]
mov dword [ebp - 4], 5
push eax
lea eax, [ebp - 0x6c]
mov dword [ebp - 0x50], 0xba2d3c5e
push eax
push ecx
call fcn.1002b92d
mov eax, dword [ebp - 0x6c]
add esp, 0xc
mov dword [eax], 0xfffffff2
cmp dword [eax], 0xffffffe8
jg 0x1002b1d8
mov dword [ebp - 0x28], 0x57102d14
mov dword [ebp - 0x2c], 0xce96f8f
mov dword [ebp - 0x44], 0x881826f
mov dword [ebp - 0x34], 0xfff0698
mov dword [ebp - 0x28], ebx
cmp dword [ebp - 0x28], 5
jle 0x1002b1ce
mov dword [ebp - 0x24], 0xb733c633
mov dword [ebp - 0x24], 0xe
cmp dword [ebp - 0x24], 0x15
jne 0x1002b1af
push 1
lea ecx, [ebp - 0x7c]
call fcn.1000ddb2
mov byte [ebp - 4], 6
lea ecx, [ebp - 0xa0]
mov dword [ebp - 0x5c], 0xd5a519d8
mov dword [ebp - 0x60], 0xd534a2c9
push 3
call fcn.1000ddb2
mov byte [ebp - 4], 7
mov dword [ebp - 0x14], ebx
jmp 0x1002af6c
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x7c]
mov dword [eax + ecx*4], 0x85ed0657
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 1
jl 0x1002af5c
mov dword [ebp - 0x14], ebx
jmp 0x1002af86
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xa0]
mov dword [eax + ecx*4], ebx
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x1002af77
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x28]
push eax
push 0x1ab1
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0xa0]
push eax
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x7c]
push eax
push ecx
lea eax, [ebp - 0x44]
mov ecx, 0x49c1
push eax
lea eax, [ebp - 0x24]
push eax
lea edx, [ebp - 0x2c]
call fcn.1002b78a
mov dword [ebp - 0x38], 0x3bd
add esp, 0x2c
cmp dword [ebp - 0x38], 0x6a0
jle 0x1002b073
mov ecx, ebx
mov dword [ebp - 0x14], ebx
mov edi, ebx
mov esi, ebx
mov eax, edi
mov dword [ebp - 0x1c], ebx
cdq
idiv esi
mov eax, edx
mov dword [ebp - 0x20], eax
cdq
idiv dword [ebp - 0x1c]
mov eax, ecx
mov ecx, edx
shl eax, cl
lea ecx, [ebp - 0xdc]
cdq
push edx
push eax
call fcn.10001abf
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1002b015
mov eax, dword [eax]
push eax
call fcn.10044453
pop ecx
push ebx
push 1
lea ecx, [ebp - 0xdc]
call fcn.1000e569
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, 0x720f
mov eax, dword [ebp - 0x20]
jl 0x1002aff3
inc esi
cmp esi, 0x2457
jl 0x1002afe6
inc edi
cmp edi, 0x5863
jl 0x1002afe4
inc ecx
mov dword [ebp - 0x14], ecx
cmp ecx, 0x7ace
jl 0x1002afe2
push 0x1857
push 0x250b
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_EnableScrollBar]
mov dword [ebp - 0x34], ebx
cmp dword [ebp - 0x34], 0x1c
jl 0x1002b175
mov dword [ebp - 0x54], 0xfffffffa
mov dword [ebp - 0x2c], 2
cmp dword [ebp - 0x2c], ebx
jl 0x1002b0a6
mov byte [ebp - 0x15], bl
cmp byte [ebp - 0x15], 0
je 0x1002b0a1
call fcn.1002b5e3
dec dword [ebp - 0x2c]
jns 0x1002b093
push 0x2904
push 0x1878
push ebx
push 0x615e
push ebx
push 0xd2c
push 0x454f
lea eax, [ebp - 0x54]
mov dl, 1
push eax
push 0x783f
mov ecx, 0x43f6
call fcn.1002b9db
mov dword [ebp - 0x1c], 0x37e4
add esp, 0x24
cmp dword [ebp - 0x1c], 0x3b9f
jle 0x1002b126
mov edi, ebx
mov esi, ebx
mov eax, ebx
mov dword [ebp - 0x20], ebx
lea ecx, [eax + esi]
mov eax, edi
shl eax, cl
mov ecx, 0x10079cf8
cdq
push edx
push eax
call fcn.1000dad0
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x120e
jl 0x1002b0f2
inc esi
cmp esi, 0x2791
jl 0x1002b0ed
inc edi
cmp edi, 0x1f50
jl 0x1002b0eb
mov byte [ebp - 4], 8
cmp dword [ebp - 0x1c], 0x3720
jge 0x1002b166
mov edx, str.jlc_gmuhty_byq_egulnr_nstf_nvco_gnvudzfby_mfelhh_czdul_cpqw_vmgv_tohhsbs_cekyiwfc
mov ecx, 0x10079cf8
call fcn.1001081c
jmp 0x1002b166
mov dword [ebp - 4], 7
inc dword [ebp - 0x34]
jmp 0x1002b076
cmp dword [ebp - 0x38], 0x181
jge 0x1002b189
push str.xapxpqyr_dztwojvkk_iugamf_vdkth_tnlte_wwqsrj
call fcn.10044453
pop ecx
lea ecx, [ebp - 0xa0]
mov dword [ebp - 4], 7
call fcn.1000de35
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 5
call fcn.1000de35
inc dword [ebp - 0x24]
jmp 0x1002af20
lea eax, [ebp - 0x50]
push eax
push ecx
lea eax, [ebp - 0x44]
push eax
lea edx, [ebp - 0x28]
lea ecx, [ebp - 0x24]
call fcn.1002b39e
add esp, 0xc
inc dword [ebp - 0x28]
jmp 0x1002af08
mov eax, dword [ebp - 0x6c]
dec dword [eax]
jmp 0x1002aee0
lea ecx, [ebp - 0x6c]
call fcn.1000de35
mov eax, dword [0x10171a90]
cmp eax, 0x270
jne 0x1002b22c
mov edx, 0x10171a98
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, 0x10172458
jl 0x1002b1f1
jmp 0x1002b238
cmp eax, 0x4e0
jb 0x1002b23d
call fcn.1002d510
mov eax, dword [0x10171a90]
mov ecx, dword [eax*4 + 0x10171a94]
inc eax
mov dword [0x10171a90], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x10172e14]
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 - 0x48]
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