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

Disassembly:
mov eax, 0x10058f34
call fcn.100586e8
sub esp, 0x80
mov byte [ebp - 0x40], dl
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
test dl, dl
je 0x10009108
mov eax, dword [0x10075550]
xor esi, esi
inc esi
test al, 1
jne 0x10008a0e
or eax, esi
mov ecx, 0x1571
or dword [0x10075544], 0xffffffff
mov edx, esi
mov dword [0x10075550], eax
mov dword [0x100741c4], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x100741c4], ecx
inc edx
cmp edx, 0x270
jl 0x100089e5
mov dword [0x100741c0], 0x270
mov dword [ebp - 0x28], 0x8f4a8fe2
xor ebx, ebx
mov dword [ebp - 0x1c], 0x24891023
mov dword [ebp - 0x14], ebx
jmp 0x10008a31
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x2c], 0x53b26bdd
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x10008a23
mov dword [ebp - 0x24], 0x6a43
cmp dword [ebp - 0x24], 0x6d85
jle 0x10008ab1
mov dword [ebp - 0x14], ebx
mov edi, ebx
mov dword [ebp - 0x28], ebx
mov eax, ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x20], ebx
mov esi, edi
mov ebx, dword [ebp - 0x14]
mov ecx, eax
mov edi, dword [ebp - 0x20]
sar esi, cl
mov ecx, edi
mov eax, esi
sar eax, cl
mov ecx, 0x10073018
xor eax, ebx
cdq
push edx
push eax
call fcn.1000421d
inc edi
cmp edi, 0x69da
jl 0x10008a62
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x18], eax
push 0
pop ebx
cmp eax, 0x7bd9
jl 0x10008a53
inc edi
mov dword [ebp - 0x28], edi
cmp edi, 0x4808
jl 0x10008a4e
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
cmp eax, 0x77c7
jl 0x10008a49
xor esi, esi
inc esi
mov dword [ebp - 0x2c], ebx
jmp 0x10008b25
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x28], 0x5f88e10e
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
shl eax, 2
cmp eax, 0x9ef4a042
sbb eax, eax
xor ecx, ecx
neg eax
add eax, 4
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
test eax, eax
mov eax, dword [ebp - 0x2c]
setg cl
xor edx, edx
cmp ecx, eax
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
setl dl
add ecx, edx
neg ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp ecx, 0xfffe
setne al
sub eax, dword [ebp - 0x18]
neg eax
sbb eax, eax
inc eax
add eax, dword [ebp - 0x2c]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x1c]
inc dword [ebp - 0x2c]
cmp dword [ebp - 0x2c], 0xe
jg 0x10008ab6
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x24], 0x6829
jge 0x10008b46
mov edx, str.sjcygd_ntdyvw_mqwyqamx_dzyhukz_tddhcl_xldtqsb_iktsw_hvlbd_qonjebudd_uflyx_rcx_jarhd_lvi
mov ecx, 0x10073018
call fcn.100065e2
or dword [ebp - 4], 0xffffffff
cmp byte [0x1007415c], 0
jne 0x10008e19
mov dword [ebp - 0x3c], 0x46dd
mov dword [ebp - 0x18], 9
mov dword [ebp - 0x14], 0x4be3d0e7
mov dword [ebp - 0x20], 0x8faa83fb
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x1c], ebx
jmp 0x10008bae
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x80], 0xfffffffe
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 3
jl 0x10008ba0
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x18]
jg 0x10008bc3
mov edx, ebx
cmp dword [ebp - 0x18], ebx
je 0x10008bc5
mov edx, esi
mov eax, dword [ebp - 0x18]
xor ecx, ecx
cmp edx, eax
setge cl
sub ecx, dword [ebp - 0x18]
neg ecx
sbb ecx, ecx
inc ecx
cmp ecx, 0xbebf
jge 0x10008be2
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x3c]
xor edx, edx
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
cmp eax, ecx
setne dl
add edx, 0xe72c34c4
neg edx
sbb edx, edx
inc edx
cmp edx, 0x9fe9
jne 0x10008c0b
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x14]
test eax, eax
mov dword [ebp - 0x78], eax
setne cl
xor eax, eax
cmp ecx, 0x5ad3
sete al
cmp eax, dword [ebp - 0x14]
jg 0x10008c3b
mov ecx, ebx
cmp dword [ebp - 0x14], ebx
je 0x10008c3d
mov ecx, esi
mov eax, dword [ebp - 0x20]
imul eax, ecx
cmp eax, 0x2c21
jge 0x10008cac
push ecx
lea eax, [ebp - 0x2d]
mov byte [ebp - 0x2d], bl
push eax
call fcn.100073ee
pop ecx
pop ecx
mov dword [ebp - 0x14], ebx
jmp 0x10008ca4
mov dword [ebp - 0x18], ebx
jmp 0x10008c94
mov eax, dword [ebp - 0x18]
mov edx, 0x26da
mov ecx, dword [ebp + eax*4 - 0x80]
mov eax, dword [ebp - 0x14]
push ecx
push ebx
push 0x8f7
push ecx
mov dword [ebp + eax*4 - 0x80], ecx
lea ecx, [ebp - 0x37]
mov byte [ebp - 0x37], bl
push 0x4508
call fcn.1000776f
add esp, 0x14
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jle 0x10008c63
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x80]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jle 0x10008c5e
jmp 0x10008cdd
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x50], 0xfffffff9
push eax
xor dl, dl
lea ecx, [ebp - 0x50]
call fcn.100076e3
push esi
lea eax, [ebp - 0x3c]
mov edx, 0x3aff
push eax
push ecx
lea eax, [ebp - 0x54]
mov ecx, 0x7812
push eax
call fcn.1000776f
add esp, 0x14
push ecx
push ecx
call fcn.10008954
pop ecx
pop ecx
mov dword [ebp - 0x14], ebx
jmp 0x10008cf9
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x34], 0xffffffff
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jl 0x10008ceb
mov dword [ebp - 0x14], ebx
jmp 0x10008d10
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x8c], esi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 3
jl 0x10008d03
mov dword [ebp - 0x24], 0x7c21
cmp dword [ebp - 0x24], 0x7c94
jle 0x10008d50
mov edi, ebx
mov dword [ebp - 0x20], ebx
mov esi, 0x39fc
mov eax, ebx
mov ecx, 0x10073018
cdq
push edx
push eax
call fcn.1000421d
add ebx, edi
dec esi
jne 0x10008d30
inc edi
push esi
pop ebx
cmp edi, 0x94e
jl 0x10008d28
inc esi
mov dword [ebp - 0x34], ebx
jmp 0x10008de1
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x20], 0xfffffffd
mov eax, dword [ebp - 0x14]
imul eax, dword [ebp - 0x14], 0x1511ebc0
sub eax, 0xfff7
neg eax
sbb eax, eax
add eax, 0xffff0002
neg eax
sbb eax, eax
inc eax
sub eax, dword [ebp - 0x14]
sub eax, 0x3a6c3797
cmp eax, 0xfffc
ja 0x10008d98
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
xor edx, edx
cmp eax, 0xfffffff9
setge dl
xor ecx, ecx
add edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
cmp edx, eax
setl cl
mov dword [ebp - 0x1c], ecx
xor ecx, ecx
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x88], edx
mov eax, dword [ebp - 0x34]
cmp eax, 0x59951ea6
setg cl
xor eax, eax
cmp ecx, edx
setg al
add eax, 5
jne 0x10008dd8
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x34]
cmp dword [ebp - 0x34], 0x16
jl 0x10008d58
mov dword [ebp - 4], 2
cmp dword [ebp - 0x24], 0x7956
jge 0x10008e0a
mov edx, str.ewgffvg_qfwn_wrrplxfm
mov ecx, 0x10073018
call fcn.100065e2
or dword [ebp - 4], 0xffffffff
sub esp, 0xc
call fcn.1000864a
add esp, 0xc
mov dword [ebp - 0x24], 0x6605
cmp dword [ebp - 0x24], 0x6857
jle 0x10008e6f
mov edi, ebx
mov dword [ebp - 0x20], ebx
mov ecx, ebx
mov eax, edi
shl eax, cl
mov ecx, 0x10073018
cdq
push edx
push eax
call fcn.1000421d
inc ebx
cmp ebx, 0xa00
jl 0x10008e2e
inc edi
push 0
pop ebx
cmp edi, 0x73a2
jl 0x10008e2b
push 0x2093
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SetMapMode]
mov dword [ebp - 0x14], 0xac64a684
mov dword [ebp - 4], 4
cmp dword [ebp - 0x24], 0x624d
jge 0x10008e95
mov edx, str.yjdp_nbn_gcls_nmrzyznk_vvlhcg_ncdsokhf_orsdxbtar_zrksbmefa_tqgn
mov ecx, 0x10073018
call fcn.100065e2
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x1c], ebx
jmp 0x10008f08
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x4c], 0x99244325
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 3
jl 0x10008efa
mov dword [ebp - 0x14], 0xffffffeb
jmp 0x10008f40
push 0x1823
lea eax, [ebp - 0x36]
mov byte [ebp - 0x36], bl
push eax
push esi
push ebx
push 0x7af5
push esi
mov edx, 0x1b83
mov ecx, 0x32c6
call fcn.10007418
add esp, 0x18
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xfffffffd
je 0x10008f17
mov dword [ebp - 0x14], 2
cmp dword [ebp - 0x14], ebx
jl 0x1000906b
mov eax, 0x50cf
mov dword [ebp - 0x20], 0xe4f9dbc9
mov dword [ebp - 0x28], 0xdf860956
mov dword [ebp - 0x1c], 0x4a938f73
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x20], 0x35ff
mov dword [ebp - 0x24], 0x879a2734
mov eax, dword [ebp - 0x14]
cmp dword [ebp + eax*4 - 0x4c], ebx
je 0x10008f9a
mov edi, esi
cmp dword [ebp - 0x4c], ebx
jne 0x10008f9c
mov edi, ebx
inc dword [ebp - 0x5c]
xor edx, edx
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x4c]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x74]
mov eax, dword [ebp - 0x70]
mov eax, dword [ebp - 0x48]
imul ecx, eax, 0xac8e
mov eax, dword [ebp - 0x6c]
cmp ecx, eax
setl dl
xor eax, eax
cmp edx, 0xe425
setg al
xor edx, edx
cmp eax, 0xd55c
mov eax, dword [ebp - 0x28]
setg dl
xor ecx, ecx
cmp edx, eax
sete cl
cmp ecx, dword [ebp - 0x44]
jne 0x10008fed
mov ecx, ebx
cmp dword [ebp - 0x1c], ebx
je 0x10008fef
mov ecx, esi
mov eax, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp + eax*4 - 0x4c]
cmp eax, ecx
mov eax, dword [ebp - 0x18]
setle dl
xor ecx, ecx
cmp edx, eax
setg cl
xor eax, eax
cmp eax, ecx
sbb eax, eax
inc eax
shl eax, 3
test eax, eax
je 0x1000901c
mov eax, esi
cmp dword [ebp - 0x5c], ebx
jne 0x1000901e
mov eax, ebx
imul eax, edi
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], ebx
je 0x10009051
push 0x48b2
push 0x1347
push esi
push ebx
lea eax, [ebp - 0x35]
mov byte [ebp - 0x35], bl
push eax
push ebx
mov edx, 0xf54
mov ecx, 0xc5d
call fcn.10007418
add esp, 0x18
jmp 0x1000905d
mov edx, 0x77f9
xor cl, cl
call fcn.100072b7
dec dword [ebp - 0x14]
mov eax, 0x50cf
jns 0x10008f5b
mov eax, dword [0x100741c0]
cmp eax, 0x270
jne 0x100090b7
mov edx, 0x100741c8
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, 0x10074b88
jl 0x1000907c
jmp 0x100090c3
cmp eax, 0x4e0
jb 0x100090c8
call fcn.100098a2
mov eax, dword [0x100741c0]
mov edx, dword [eax*4 + 0x100741c4]
inc eax
mov dword [0x100741c0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x10075544]
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
jmp 0x10009135
xor ebx, ebx
push ebx
push 0x1aac
push ebx
push ebx
push 0x1f4a
push 0x2573
push 0x92a
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_ExtTextOutA]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret