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

Disassembly:
mov eax, 0x1005cba3
call fcn.1005c610
sub esp, 0x94
push ebx
push esi
xor ebx, ebx
mov dword [ebp - 0x80], edx
push edi
mov dword [ebp - 0x10], esp
cmp byte [ebp + 0xc], bl
je 0x1000236e
mov eax, dword [ebp + 0x18]
mov dword [eax], ebx
jmp 0x10002364
mov dword [ecx], ebx
inc dword [eax]
cmp dword [eax], 1
jle 0x10002360
jmp 0x1000290e
mov dword [ebp - 0x14], 0xfffffffa
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], 0x3395cc9e
mov dword [ebp - 0x54], 0xb132
push 2
mov dword [ebp - 0x34], 0x59cde89c
mov dword [ebp - 0x14], ebx
pop edi
jmp 0x100023a3
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x30], 0xcff0ea75
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x10002395
mov dword [ebp - 0x14], ebx
jmp 0x100023be
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x94], 0x7374fd5
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x100023ad
mov dword [ebp - 0x14], 1
cmp dword [ebp - 0x14], ebx
jl 0x10002526
mov dword [ebp - 0x20], 0xffffffff
lea ecx, [ebp - 0x60]
push edi
call fcn.10004264
mov dword [ebp - 4], ebx
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x20], 0xfffffffe
mov dword [ebp - 0x20], 0xfffffffd
mov dword [ebp - 0x20], 0xfffffffc
push 3
call fcn.10004264
mov byte [ebp - 4], 1
mov dword [ebp - 0x28], ebx
jmp 0x1000241f
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x60]
mov dword [eax + ecx*4], 0xb0881dda
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], edi
jl 0x1000240f
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.10001cff
mov dword [ebp - 0x1c], 1
xor edx, edx
mov eax, dword [ebp - 0x14]
pop ecx
pop ecx
mov ecx, dword [ebp + eax*4 - 0x30]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x30]
cmp ecx, eax
mov eax, dword [ebp - 0x30]
setle dl
xor ecx, ecx
add edx, eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x30]
cmp eax, edx
sete cl
mov dword [ebp - 0x20], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp + eax*4 - 0x30]
mov eax, dword [ebp - 0x20]
sub esi, eax
mov eax, dword [ebp - 0x60]
cmp esi, 0x1f0e
mov dword [ebp - 0x94], esi
setl cl
mov dword [eax], esi
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + eax*4 - 0x30]
xor eax, eax
cmp edx, ecx
setg al
xor edx, edx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x30]
mov eax, dword [ebp - 0x60]
cmp dword [eax], 0xc4eb
mov eax, dword [ebp - 0x14]
setl dl
xor ecx, ecx
cmp edx, eax
setne cl
xor edx, edx
imul eax, ecx, 0x9c21
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x14]
cmp ecx, eax
mov eax, dword [ebp - 0x14]
setl dl
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x30]
cmp edx, eax
setne cl
sub ecx, dword [ebp - 0x14]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x30]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x30]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x30]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x78]
mov dword [eax], ecx
lea ecx, [ebp - 0x78]
call fcn.100042e7
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x60]
call fcn.100042e7
dec dword [ebp - 0x14]
jns 0x100023d4
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
xor eax, eax
inc eax
sub eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x54]
mov eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x18]
mov eax, dword [0x1044c7a8]
mov dword [ebp - 0x1c], 0xac80ea
test al, 1
jne 0x10002597
or dword [0x1044db44], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x1044c7a8], eax
xor edx, edx
mov dword [0x1044c7c4], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x1044c7c4], ecx
inc edx
cmp edx, 0x270
jl 0x1000256e
mov dword [0x1044c7c0], 0x270
cmp byte [0x1044c77c], 0
jne 0x10002714
mov dword [ebp - 0x34], 0xfffc
mov dword [ebp - 0x18], 0x767d
cmp dword [ebp - 0x18], 0x77c6
jle 0x100025e5
mov esi, ebx
mov edi, ebx
mov eax, edi
mov ecx, 0x10078098
xor eax, esi
cdq
push edx
push eax
call fcn.10003fb2
inc edi
cmp edi, 0x483
jl 0x100025bf
inc esi
cmp esi, 0x2694
jl 0x100025bd
push 2
pop edi
push 0x17ec
mov byte [ebp - 0x22], bl
lea edx, [ebp - 0x22]
push 0x5ef8
xor cl, cl
call fcn.10001c8b
pop ecx
mov dword [ebp - 4], edi
cmp dword [ebp - 0x18], 0x72f3
pop ecx
jge 0x10002619
mov edx, str.gbflo_ckhn_nrjftdm_crhd_vmsc
mov ecx, 0x10078098
call fcn.100065fc
or dword [ebp - 4], 0xffffffff
mov byte [ebp - 0x21], bl
cmp byte [ebp - 0x21], 0
je 0x1000262d
push ecx
call sub.KERNEL32.dll_SwitchToThread
pop ecx
push 0x1044c7c0
push 0x22ca
push ebx
push 0x744e
push 0x777c
push 0x134a
push 0x55fc
mov edx, 0x6066
mov ecx, 0x639c
call fcn.10001bd0
add esp, 0x1c
mov dword [ebp - 0x4c], 0xffffffff
mov dword [ebp - 0x3c], 0x505b0bb8
lea ecx, [ebp - 0x6c]
mov dword [ebp - 0x40], 0xa5f9c710
push edi
call fcn.10004264
push 0x7a93
mov dword [ebp - 4], 4
lea eax, [ebp - 0x7c]
push 0x31f1
mov dword [ebp - 0x44], ebx
lea ecx, [ebp - 0x6c]
push ebx
mov dword [ebp - 0x50], 0xcf456574
mov edx, 0x2af7
mov dword [ebp - 0x48], 9
push 0x32db
mov dword [ebp - 0x38], 0xa164e62b
mov dword [ebp - 0x18], 0x2d63
push eax
call fcn.10003c3c
push 0x68f1
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x50]
push eax
push 0x1358
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x38]
push eax
push ebx
push 0x33c2
lea eax, [ebp - 0x4c]
push 0xb26
push eax
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x40]
call fcn.10001aff
add esp, 0x40
lea ecx, [ebp - 0x6c]
inc dword [ebp - 0x18]
or dword [ebp - 4], 0xffffffff
call fcn.100042e7
mov byte [0x1044c77c], 1
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x18], 0xfffffff7
mov dword [ebp - 0x20], 0x2324015f
mov dword [ebp - 0x18], 0x20b2455f
mov dword [ebp - 0x34], 0xb03be465
mov dword [ebp - 0x14], ebx
jmp 0x10002775
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xa0], 0xcce35a12
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x10002764
mov dword [ebp - 0x18], 0x35b9
cmp dword [ebp - 0x18], 0x390a
jle 0x100027be
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_RegGetKeySecurity]
mov esi, ebx
mov edi, ebx
mov ebx, 0x785d
mov eax, edi
mov ecx, 0x10078098
cdq
push edx
push eax
call fcn.10003fb2
add edi, esi
dec ebx
jne 0x1000279e
inc esi
cmp esi, 0x5d38
jl 0x10002797
push 2
pop edi
mov dword [ebp - 0x14], ebx
jmp 0x100027d4
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x88], 0x3090707e
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x100027c3
mov dword [ebp - 4], 5
cmp dword [ebp - 0x18], 0x3500
jge 0x100027f8
mov edx, str.ruimjsq_nswrnn_bupnmf_swhbsgyrx_vhdawtojs_mizsfyctd_yklzgop_zjrhjpoan_quae_csrbc
mov ecx, 0x10078098
call fcn.100065fc
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
setg cl
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x18], 0x8e1b8814
sbb ecx, ecx
inc ecx
sub ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
neg ecx
sbb ecx, ecx
inc ecx
sub ecx, eax
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x84], 1
mov eax, dword [ebp - 0x1c]
dec eax
neg eax
sbb eax, eax
neg eax
imul eax, dword [ebp - 0x20]
imul eax, dword [ebp - 0x1c]
mov dword [ebp - 0x34], eax
mov eax, dword [0x1044c7c0]
cmp eax, 0x270
jne 0x100028bf
mov edx, 0x1044c7c8
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, 0x1044d188
jl 0x1000286a
jmp 0x100028cb
cmp eax, 0x4e0
jb 0x100028d0
call fcn.10004aaf
mov eax, dword [0x1044c7c0]
mov edx, dword [eax*4 + 0x1044c7c4]
inc eax
mov dword [0x1044c7c0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x1044db44]
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 + 0x14]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret