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

Disassembly:
mov eax, 0x1005aaf3
call fcn.10059d20
sub esp, 0xc4
cmp byte [ebp + 0x18], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov edi, ecx
je 0x100196cb
cmp byte [ebp + 0x14], 0
je 0x100196a7
push 0x31e
push 1
xor ebx, ebx
lea edx, [ebp + 0x1b]
push ebx
push 0x86a
push 0x5aac
push 1
mov ecx, 0x41d7
mov byte [ebp + 0x1b], bl
call fcn.10019655
add esp, 0x18
jmp 0x10019f18
cmp byte [edx], 0
je 0x10019f18
push 1
push 0
push 0x53f
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_SetScrollInfo]
jmp 0x10019f18
cmp byte [ebp + 8], 0
je 0x1001970a
mov esi, dword [ebp + 0xc]
xor ebx, ebx
cmp dword [esi], ebx
je 0x100196db
inc ebx
mov eax, dword [ebp + 0x10]
xor edx, edx
mov eax, dword [eax]
mov eax, dword [esi]
mov ecx, dword [esi]
mov eax, dword [esi]
cmp ecx, eax
mov eax, dword [esi]
sete dl
xor ecx, ecx
cmp edx, eax
sete cl
xor eax, eax
add ecx, ebx
cmp ecx, 0xfe04
setge al
mov dword [edi], eax
jmp 0x10019f18
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x5c], eax
mov eax, dword [0x100d72c4]
test al, 1
jne 0x1001975f
or dword [0x100d8654], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x100d72c4], eax
xor edx, edx
mov dword [0x100d72d4], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x100d72d4], ecx
inc edx
cmp edx, 0x270
jl 0x10019736
mov dword [0x100d72d0], 0x270
mov dword [ebp - 0x14], 0x7e65
cmp dword [ebp - 0x14], 0x7ff8
jle 0x100197a0
call dword [sym.imp.USER32.dll_GetMessageTime]
xor ebx, ebx
mov esi, ebx
mov edi, ebx
mov eax, edi
mov ecx, 0x10073998
and eax, esi
cdq
push edx
push eax
call fcn.100034ac
inc edi
cmp edi, 0x55ff
jl 0x1001977b
inc esi
cmp esi, 0x20dd
jl 0x10019779
jmp 0x100197a2
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x14], 0x7ccd
jge 0x100197bd
mov edx, str.rtbr_wnmmirbnf_qszh_kpb_sge_udlxqx_gdzuqc_qobnbcq_sxmq_edhmmwq
mov ecx, 0x10073998
call fcn.10005649
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x1c], 0xfffffffa
mov dword [ebp - 0x20], 0x2906c902
mov dword [ebp - 0x3c], 0xb06d673c
mov dword [ebp - 0x2c], 0x65e429b0
mov dword [ebp - 0x20], ebx
jmp 0x10019815
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0xa0], 1
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 4
jl 0x10019804
push 0xfffffffffffffffb
mov dword [ebp - 0x1c], 0x1d
pop esi
cmp dword [ebp - 0x1c], 0xffffffe5
jne 0x10019ab7
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x14], 0x51f1
cmp dword [ebp - 0x14], 0x529e
jle 0x1001988f
push ebx
call dword [sym.imp.USER32.dll_RegisterClassA]
mov edi, ebx
mov esi, ebx
mov dword [ebp - 0x34], ebx
mov ecx, ebx
mov eax, esi
sar eax, cl
mov ecx, 0x10073998
xor eax, edi
cdq
push edx
push eax
call fcn.100034ac
inc ebx
cmp ebx, 0x6774
jl 0x10019859
inc esi
push 0
pop ebx
cmp esi, 0x4307
jl 0x10019856
inc edi
cmp edi, 0x599a
jl 0x10019854
push 0xfffffffffffffffb
pop esi
mov dword [ebp - 0x18], ebx
jmp 0x100198a2
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x48], 1
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x10019894
mov dword [ebp - 4], 2
cmp dword [ebp - 0x14], 0x4ea4
jge 0x100198c7
mov edx, str.povcwc_krils_cqqd_naxdnuibx_aotzmf_ectrdpmys
mov ecx, 0x10073998
call fcn.10005649
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x18], ebx
jmp 0x10019903
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x78], 1
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x100198f5
push ebx
push ecx
mov byte [ebp - 0x2f], bl
lea ecx, [ebp - 0x2f]
call fcn.10018f7a
pop ecx
pop ecx
mov dword [ebp - 0x40], ebx
jmp 0x10019aa5
mov dword [ebp - 0x58], 0xb4ef66b
mov dword [ebp - 0x54], 0xb4ef66b
mov dword [ebp - 0x50], 0xb4ef66b
mov dword [ebp - 0x4c], 0xb4ef66b
mov dword [ebp - 0x18], 0x423637b3
mov dword [ebp - 0x34], 0xfffffff8
cmp dword [ebp - 0x1c], ebx
je 0x10019959
cmp dword [ebp - 0x18], ebx
je 0x10019959
xor ecx, ecx
inc ecx
jmp 0x1001995b
mov ecx, ebx
mov eax, dword [ebp - 0xa0]
sub ecx, eax
mov eax, dword [ebp - 0x78]
add eax, ecx
je 0x1001996d
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0xa0], 1
xor edx, edx
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x70]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
dec dword [ebp - 0x50]
mov eax, dword [ebp - 0x18]
cmp eax, 0x21eb
mov eax, dword [ebp - 0x18]
setl dl
xor ecx, ecx
cmp edx, eax
setne cl
imul eax, ecx, 9
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], 0x15
cmp dword [ebp - 0x20], 0x1d
jle 0x10019aa2
mov dword [ebp - 0x90], 0x3a09
mov dword [ebp - 0x8c], 0x3a09
mov dword [ebp - 0x88], 0x3a09
mov dword [ebp - 0x84], 0x3a09
mov dword [ebp - 0x14], 0x618d7c58
mov dword [ebp - 0x14], ebx
jmp 0x100199fc
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0xa8], 0x8eaf5359
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x100199eb
mov eax, dword [ebp - 0x8c]
xor edx, edx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
cmp ecx, eax
mov eax, dword [ebp - 0x20]
setl dl
xor ecx, ecx
cmp edx, eax
setl cl
sub ecx, dword [ebp - 0x34]
cmp ecx, dword [ebp - 0x18]
jle 0x10019a33
mov eax, dword [ebp - 0x70]
mov eax, dword [ebp - 0x50]
xor edx, edx
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x8c]
cmp eax, ecx
mov eax, dword [ebp - 0x2c]
setge dl
xor ebx, ebx
cmp edx, eax
mov eax, dword [ebp - 0x20]
push 0
setg bl
xor ecx, ecx
sub ebx, eax
mov dword [ebp - 0xa0], ebx
mov eax, dword [ebp - 0x1c]
cmp eax, ebx
mov eax, dword [ebp - 0x50]
setne cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x14]
pop ebx
setge dl
xor ecx, ecx
cmp edx, eax
setne cl
xor eax, eax
sub ecx, dword [ebp - 0x40]
test ecx, ecx
setle al
mov dword [ebp - 0xa8], eax
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 0x1d
jg 0x100199b7
dec dword [ebp - 0x40]
cmp dword [ebp - 0x40], 0xffffffe2
jle 0x10019920
dec dword [ebp - 0x1c]
jmp 0x10019825
mov dword [ebp - 0x1c], ebx
jmp 0x10019ae4
mov eax, dword [ebp - 0x1c]
cmp dword [ebp + eax*4 - 0xa0], ebx
jne 0x10019aea
push 0x3e75
lea eax, [ebp - 0x2d]
mov byte [ebp - 0x2d], bl
push eax
push ebx
xor dl, dl
mov cl, 1
call fcn.10019244
add esp, 0xc
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 3
jle 0x10019abc
xor ecx, ecx
mov dword [ebp - 0x14], 0xc099a567
inc ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x18], ebx
jmp 0x10019b0a
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x24], 0xcf57
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], ecx
jl 0x10019afc
mov dword [ebp - 0x18], ebx
jmp 0x10019b25
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xb8], 0xffffffff
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 4
jl 0x10019b14
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
sub ecx, 0xffff
neg ecx
sbb ecx, ecx
neg eax
inc ecx
xor edx, edx
cmp eax, ecx
mov eax, dword [ebp - 0x24]
setge dl
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], ebx
jne 0x10019b66
cmp dword [ebp - 0x24], ebx
jne 0x10019b66
mov edx, ebx
jmp 0x10019b69
xor edx, edx
inc edx
mov eax, dword [ebp - 0x24]
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x24]
push 7
setl cl
sub ecx, eax
xor eax, eax
cmp ecx, 0xa0c0e075
pop ecx
setne al
cmp ecx, eax
sbb eax, eax
neg eax
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x24]
neg eax
sbb eax, eax
inc eax
inc edx
sub edx, eax
mov eax, dword [ebp - 0x24]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
setg cl
cmp byte [0x100d71fd], 0
mov dword [ebp - 0xac], ecx
jne 0x10019be3
push ecx
push 0x1ca5
push 0x100d72d0
push 0x581b
push ecx
push ebx
push ecx
call fcn.100191be
add esp, 0x1c
mov byte [0x100d71fd], 1
mov dword [ebp - 0x34], 0x5660
cmp dword [ebp - 0x34], 0x56c8
jle 0x10019c90
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_GetCurrentPositionEx]
mov edi, ebx
mov dword [ebp - 0x1c], ebx
mov esi, ebx
mov dword [ebp - 0x18], ebx
mov ecx, esi
mov dword [ebp - 0x2c], edi
mov eax, ebx
mov esi, edi
mov dword [ebp - 0x20], eax
sar esi, cl
mov edi, eax
mov dword [ebp - 0x14], 0x1b93
mov eax, edi
lea ecx, [ebp - 0xd0]
and eax, esi
cdq
push edx
push eax
call fcn.10001a94
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10019c49
mov eax, dword [eax]
push eax
call fcn.1004252f
pop ecx
push ebx
push 1
lea ecx, [ebp - 0xd0]
call fcn.100038eb
dec edi
dec dword [ebp - 0x14]
jne 0x10019c2d
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x4559
jl 0x10019c24
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x1c]
inc esi
mov dword [ebp - 0x18], esi
cmp esi, 0x6d3e
jl 0x10019c16
inc edi
mov dword [ebp - 0x1c], edi
cmp edi, 0x2543
jl 0x10019c11
mov dword [ebp - 0x1c], 0x61f9
xor ecx, ecx
mov dword [ebp - 0x28], 0xd2466e9f
inc ecx
mov dword [ebp - 0x28], 0xa11600d5
mov dword [ebp - 0x28], 0xa14c5530
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x28], 0x77cccaea
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x28], 0xda99da97
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x14], ebx
jmp 0x10019ce1
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x60], 6
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], ecx
jl 0x10019cd3
cmp dword [ebp - 0x1c], ebx
je 0x10019d2d
mov dword [ebp - 0x14], 0x7e4fc22
mov dword [ebp - 0x1c], 0xffffffe4
jmp 0x10019d22
push ebx
mov dword [ebp - 0x38], 0xf37d
lea edx, [ebp - 0x38]
push ecx
call fcn.10018f39
pop ecx
pop ecx
mov dword [ebp - 0x38], ebx
jmp 0x10019d19
inc dword [ebp - 0x14]
inc dword [ebp - 0x38]
cmp dword [ebp - 0x38], 0x10
jl 0x10019d13
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0x32
jg 0x10019cfb
jmp 0x10019e53
mov dword [ebp - 0x2c], 0x5b1b6fd4
mov dword [ebp - 0x3c], 0x3b4709ba
mov dword [ebp - 0x14], 0x5f40e13f
mov dword [ebp - 0x28], 0xfffffff7
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], ebx
jmp 0x10019d63
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x80], 0x872d9ee1
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10019d55
mov dword [ebp - 0x1c], ebx
jmp 0x10019e16
mov dword [ebp - 0x28], 0x5145ccb9
xor edx, edx
mov dword [ebp - 0x28], 0x7289fff1
mov dword [ebp - 0x28], 0xafb5d1cb
mov dword [ebp - 0x74], 0xfffffff8
mov eax, dword [ebp - 0x2c]
cmp eax, 0xfffffffd
mov eax, dword [ebp - 0x3c]
setg dl
xor ecx, ecx
cmp edx, eax
setge cl
xor edx, edx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x74]
mov eax, dword [ebp - 0x14]
cmp eax, ecx
setl dl
xor eax, eax
cmp edx, 0x659baaa4
setge al
sub eax, dword [ebp - 0x20]
neg eax
sbb eax, eax
inc eax
imul esi, eax, 9
neg esi
sbb esi, esi
xor edx, edx
neg esi
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp + eax*4 - 0x80]
mov eax, dword [ebp - 0x18]
cmp eax, ecx
mov eax, dword [ebp - 0x28]
setg dl
xor ecx, ecx
add eax, 0xd800
cmp eax, esi
setge cl
xor eax, eax
imul edx, ecx
cmp edx, 0x1d12
setge al
xor ecx, ecx
cmp eax, 0x21dd
mov eax, dword [ebp - 0x1c]
setne cl
mov dword [ebp + eax*4 - 0x80], ecx
xor ecx, ecx
inc dword [ebp - 0x1c]
inc ecx
cmp dword [ebp - 0x1c], ecx
jle 0x10019d71
lea eax, [ebp - 0x2e]
mov byte [ebp - 0x2e], bl
push eax
push 0x36aa
push 0xfe
push 0x4507
push ebx
push ebx
push 0xb7d
push 0x1a59
push 0x1457
mov edx, 0x47da
call fcn.10019f29
add esp, 0x24
mov dword [ebp - 0x20], ebx
cmp dword [ebp - 0x20], ebx
jl 0x10019e69
mov eax, dword [ebp - 0x20]
cmp dword [ebp + eax*4 - 0x60], ebx
jne 0x10019e69
dec dword [ebp - 0x20]
jns 0x10019e5b
cmp dword [ebp - 0x34], 0x561a
jge 0x10019e7d
push str.ynctxmxd_ztzodam_azr
call fcn.1004252f
pop ecx
mov eax, dword [0x100d72d0]
cmp eax, 0x270
jne 0x10019ec9
mov edx, 0x100d72d8
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, 0x100d7c98
jl 0x10019e8e
jmp 0x10019ed5
cmp eax, 0x4e0
jb 0x10019eda
call fcn.1001a821
mov eax, dword [0x100d72d0]
mov edx, dword [eax*4 + 0x100d72d4]
inc eax
mov dword [0x100d72d0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x100d8654]
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 - 0x5c]
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