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

Disassembly:
mov eax, 0x1004b346
call fcn.1004ae30
sub esp, 0x7c
cmp byte [ebp + 0xc], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov byte [ebp - 0x14], cl
je 0x10002ee3
cmp byte [ebp + 8], 0
je 0x1000287e
mov byte [ebp + 0xf], 0
cmp byte [ebp + 0xf], 0
je 0x1000286d
push ecx
push ecx
push 1
push ecx
push ecx
mov ecx, 0x137f
call fcn.10002463
add esp, 0x14
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0x14]
xor esi, esi
inc esi
mov dword [ebp - 0x48], edi
mov dword [ebp + 0xc], esi
xor ebx, ebx
mov dword [ebp - 0x3c], 6
mov dword [ebp - 0x44], 0x2b90f998
mov dword [ebp - 0x28], ebx
jmp 0x100028ad
mov eax, dword [ebp - 0x28]
mov dword [ebp + eax*4 - 0x54], 0xd0188753
inc dword [ebp - 0x28]
cmp dword [ebp - 0x28], 2
jl 0x1000289f
mov eax, dword [ebp + 0xc]
add eax, 0x530d
imul eax, eax, 0x6baf
test eax, eax
je 0x100028d8
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov eax, dword [ebp + 0xc]
cmp ecx, eax
setl dl
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x3c]
xor edx, edx
mov eax, dword [ebp + 0xc]
cmp ecx, eax
setle dl
xor eax, eax
imul edx, dword [ebp + 0xc]
sub edx, dword [ebp + 0xc]
cmp edx, 0x20274952
setle al
xor edx, edx
test eax, eax
mov dword [ebp - 0x50], eax
mov eax, dword [ebp + 0xc]
sete dl
xor ecx, ecx
cmp eax, edx
setl cl
mov dword [ebp - 0x44], ecx
mov dword [ebp + 0xc], ebx
jmp 0x10002983
mov eax, dword [ebp + 0xc]
mov eax, dword [ebp + eax*4 - 0x54]
mov ecx, dword [ebp + 0xc]
neg ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp ecx, 0xffffffff
setge al
cmp eax, 0xffffffff
mov eax, dword [ebp + 0xc]
sbb ecx, ecx
neg ecx
sub ecx, 0x3e73
neg ecx
sbb ecx, ecx
inc ecx
sub ecx, dword [ebp + eax*4 - 0x54]
cmp ecx, 6
jbe 0x10002950
mov eax, dword [ebp + 0xc]
mov eax, dword [ebp + eax*4 - 0x54]
mov eax, dword [ebp - 0x54]
xor ecx, ecx
cmp eax, 0xaec
mov eax, dword [ebp + 0xc]
setne cl
xor edx, edx
cmp ecx, 8
mov eax, dword [ebp + eax*4 - 0x54]
setl dl
sub eax, edx
jne 0x10002977
mov ecx, ebx
cmp dword [ebp - 0x54], ebx
je 0x10002979
mov ecx, esi
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x54], ecx
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jle 0x10002913
mov eax, dword [0x10063bb4]
test al, 1
jne 0x100029d5
or eax, esi
mov ecx, 0x1571
or dword [0x10064f44], 0xffffffff
mov edx, esi
mov dword [0x10063bb4], eax
mov dword [0x10063bc4], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x10063bc4], ecx
inc edx
cmp edx, 0x270
jl 0x100029ac
mov dword [0x10063bc0], 0x270
cmp byte [0x10063b50], bl
jne 0x10002deb
push 0x5bf6
push ebx
mov ecx, 0x10063bc0
call fcn.10001abb
mov dword [ebp - 0x2c], 0xc90a35f3
mov dword [ebp - 0x3c], 0x478144ad
mov dword [ebp - 0x18], ebx
pop ecx
mov dword [ebp - 0x20], ebx
pop ecx
mov dword [ebp - 0x24], 0x5ef11ea
mov dword [ebp + 0xc], 0xd1337a3f
push 3
mov dword [ebp + 0xc], esi
mov dword [ebp + 0xc], ebx
pop ecx
jmp 0x10002a2e
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x70], 0xffffffff
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], ecx
jl 0x10002a20
mov dword [ebp + 0xc], ebx
jmp 0x10002a49
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x88], 0xdcdf
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], ecx
jl 0x10002a38
cmp dword [ebp - 0x70], ebx
jne 0x10002a56
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x18]
neg eax
sbb eax, eax
neg eax
inc eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], ebx
jne 0x10002a72
mov ecx, ebx
cmp dword [ebp - 0x2c], ebx
je 0x10002a74
mov ecx, esi
mov eax, dword [ebp - 0x84]
inc dword [ebp - 0x84]
cmp eax, ecx
mov dword [ebp - 0x3c], esi
mov eax, esi
mov ecx, dword [ebp - 0x3c]
cmove eax, ebx
imul ecx, eax
xor edx, edx
mov eax, dword [ebp - 0x2c]
cmp eax, ecx
mov eax, 0x89c089ce
setg dl
cmp eax, edx
sbb eax, eax
neg eax
mov dword [ebp - 0x18], eax
mov dword [ebp + 0xc], ebx
je 0x10002d6f
jmp 0x10002ac1
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x5c], 0xfaba
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 2
jl 0x10002ab3
mov dword [ebp + 0xc], ebx
jmp 0x10002ada
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x1c], 0xc4ad1532
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jl 0x10002acc
mov dword [ebp - 0x18], ebx
cmp dword [ebp - 0x18], 0xffffffed
jle 0x10002dd4
mov dword [ebp - 0x28], 0x5f32
mov dword [ebp - 0x30], 0xf69bad97
mov dword [ebp + 0xc], 0xfffffff8
mov dword [ebp - 0x44], 0x6f4d
cmp dword [ebp - 0x44], 0x701e
jle 0x10002b59
push 0x20da
push ebx
push ebx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_PolyPolygon]
mov edi, ebx
mov esi, ebx
mov eax, esi
mov ecx, 0x10062a18
and eax, edi
cdq
push edx
push eax
call fcn.10003a17
inc esi
cmp esi, 0x43b5
jl 0x10002b30
inc edi
cmp edi, 0x5230
jl 0x10002b2e
mov edi, dword [ebp + 0x14]
xor esi, esi
inc esi
mov dword [ebp - 0x40], 4
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x44], 0x6d77
jge 0x10002b7b
mov edx, str.jxpskqozv_jfyi_fyxatqbnv_fbm_fokszxipl_rgqhn_xdk_xwpyywmyz_godv_pijuroa
mov ecx, 0x10062a18
call fcn.10006198
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x28], ebx
jne 0x10002dd4
mov eax, dword [ebp - 0x58]
dec eax
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebp - 0x6c]
jle 0x10002c26
mov eax, dword [ebp - 0x2c]
sub eax, 0xb5c1
cmp eax, dword [ebp - 0x28]
jne 0x10002bae
mov eax, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x58]
xor edx, edx
mov ecx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x1c]
inc ecx
cmp ecx, eax
sete dl
mov dword [ebp - 0x30], edx
xor edx, edx
mov ecx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x30]
cmp eax, ecx
mov eax, dword [ebp - 0x20]
setl dl
xor ecx, ecx
cmp edx, eax
setge cl
lea eax, [ecx - 0x3fb446e2]
mov dword [ebp - 0x1c], eax
test eax, eax
jne 0x10002c26
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x34], 0xc2fcb8f7
mov dword [ebp + 0xc], ebx
jmp 0x10002d4f
mov dword [ebp - 0x6c], esi
cmp dword [ebp - 0x1c], ebx
je 0x10002be9
mov dword [ebp - 0x44], 0x64ea5f72
cmp dword [ebp - 0x30], ebx
jne 0x10002ca8
mov ecx, dword [ebp - 0x28]
xor edx, edx
mov eax, dword [ebp - 0x1c]
cmp eax, ecx
setle dl
cmp edx, 7
jl 0x10002c53
mov ecx, ebx
cmp dword [ebp - 0x44], ebx
je 0x10002c55
mov ecx, esi
mov eax, dword [ebp - 0x1c]
sub eax, ecx
je 0x10002c63
mov ecx, esi
cmp dword [ebp - 0x28], ebx
jne 0x10002c65
mov ecx, ebx
mov eax, dword [ebp - 0x24]
imul eax, ecx
mov ecx, 0xcb58b1ca
imul eax, eax, 0xfb88
cmp ecx, eax
mov eax, dword [ebp - 0x2c]
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
setne cl
imul eax, ecx, 0xcc8f
test eax, eax
je 0x10002c97
mov eax, esi
cmp dword [ebp - 0x24], ebx
jne 0x10002c99
mov eax, ebx
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp + 0xc]
cmp eax, 0xd1a6
setle cl
mov dword [ebp - 0x20], ecx
jmp 0x10002d59
mov dword [ebp - 0x44], 0x565c6936
mov dword [ebp - 0x4c], 0x8a7deb65
mov eax, dword [ebp + 0xc]
cmp dword [ebp - 0x34], ebx
jne 0x10002d15
cmp dword [ebp + 0xc], ebx
jne 0x10002ce4
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x40]
xor edx, edx
mov eax, dword [ebp - 0x44]
mov eax, dword [ebp - 0x44]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x40]
cmp eax, 0xab384274
setne dl
xor ecx, ecx
imul edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
cmp edx, eax
setg cl
cmp ecx, dword [ebp - 0x18]
mov ecx, ebx
jne 0x10002d17
mov ecx, esi
mov eax, dword [ebp - 0x30]
xor edx, edx
cmp ecx, eax
setg dl
xor ecx, ecx
add edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x28]
cmp edx, eax
setg cl
add ecx, dword [ebp - 0x20]
jne 0x10002d36
mov eax, dword [ebp - 0x34]
mov eax, dword [ebp - 0x30]
xor edx, edx
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x34]
cmp ecx, eax
setl dl
mov dword [ebp - 0x4c], edx
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 0x14
jl 0x10002cc6
dec dword [ebp - 0x18]
jmp 0x10002ae2
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x7c], 7
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 3
jl 0x10002d61
mov byte [ebp + 0xf], bl
cmp byte [ebp + 0xf], bl
je 0x10002dab
push 0x1214
push ebx
push 0x62ea
push ebx
push esi
push 0x51e0
push 0x77d3
push 0x4ccb
mov edx, 0x2be9
mov ecx, 0x6afa
call fcn.10003751
add esp, 0x20
mov ecx, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x74]
neg ecx
mov eax, dword [ebp - 0x78]
neg ecx
sbb ecx, ecx
neg ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x18]
mov dword [ebp + 0xc], eax
sub esp, 0x10
xor dl, dl
mov ecx, 0x1c60
push 0x10063b50
call fcn.10002669
add esp, 0x14
mov dword [ebp - 0x38], 0x7a4a12b5
mov dword [ebp + 0xc], ebx
jmp 0x10002e05
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x64], 0x9ac7
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 2
jl 0x10002df7
mov dword [ebp - 0x38], esi
cmp dword [ebp - 0x38], ebx
jl 0x10002e38
mov dword [ebp + 0xc], 0xffffffff
mov dword [ebp + 0xc], ebx
jmp 0x10002e2d
mov eax, dword [ebp + 0xc]
mov dword [ebp + eax*4 - 0x64], 0xb7ce
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 2
jl 0x10002e1f
dec dword [ebp - 0x38]
jns 0x10002e13
sub esp, 0x14
lea ecx, [ebp - 0x38]
call fcn.10003290
mov eax, dword [0x10063bc0]
add esp, 0x14
cmp eax, 0x270
jne 0x10002e92
mov edx, 0x10063bc8
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, 0x10064588
jl 0x10002e57
jmp 0x10002e9e
cmp eax, 0x4e0
jb 0x10002ea3
call fcn.100044ed
mov eax, dword [0x10063bc0]
mov ecx, dword [eax*4 + 0x10063bc4]
inc eax
mov dword [0x10063bc0], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x10064f44]
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 dword [edi], eax
jmp 0x1000286d
test cl, cl
je 0x10002eee
inc dword [edx]
jmp 0x1000286d
mov eax, dword [ebp + 0x10]
xor ebx, ebx
cmp byte [eax], bl
je 0x10002f05
push ebx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_ValidateRgn]
mov dword [ebp + 0xc], 0x3563
cmp dword [ebp + 0xc], 0x3613
jle 0x10002f3b
mov esi, ebx
mov edi, ebx
lea eax, [edi + esi]
mov ecx, 0x10062a18
cdq
push edx
push eax
call fcn.10003a17
inc edi
cmp edi, 0x2b2a
jl 0x10002f19
inc esi
cmp esi, 0x6443
jl 0x10002f17
mov dword [ebp - 4], 2
cmp dword [ebp + 0xc], 0x33f8
jge 0x1000286d
mov edx, str.cdwipv_xdsnoei_lcjh_cabzzoyha_yziki_bxjkemoy_tuudcp_wboebg_byhzeacm_ihr_inom_stgs_watib_tabfa
mov ecx, 0x10062a18
call fcn.10006198
jmp 0x1000286d