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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x10061c4e
push eax
mov dword fs:[0], esp
sub esp, 0x78
cmp byte [ebp + 8], 0
push ebx
push esi
push edi
je 0x100258b2
xor ebx, ebx
lea ecx, [esp + 0x38]
inc ebx
push ebx
call fcn.10003984
and dword [esp + 0x8c], 0
lea ecx, [esp + 0x44]
mov dword [esp + 0x18], 0x17633efc
mov dword [esp + 0x1c], 0x255d5800
mov dword [esp + 0x14], 8
push 3
call fcn.10003984
mov byte [esp + 0x8c], bl
mov dword [esp + 0x10], 0
jmp 0x100254ee
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x38]
mov dword [eax + ecx*4], 0xfffffffe
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x100254db
push 0x5dd2
lea eax, [esp + 0x48]
mov ecx, 0x42a9
push eax
lea eax, [esp + 0x18]
push eax
call fcn.10026b3a
pop ecx
push ebx
sub esp, 0xc
lea eax, [esp + 0x50]
lea ecx, [esp + 0x30]
push eax
push 0xe3e
call fcn.10025a1c
mov eax, dword [esp + 0x58]
xor ecx, ecx
add esp, 0x20
cmp dword [eax], ecx
setne cl
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
mov edx, dword [eax]
xor eax, eax
test edx, edx
setne al
xor ecx, ecx
neg eax
cmp edx, eax
sete cl
sub ecx, edx
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp ecx, edx
setne al
xor ecx, ecx
sub edx, eax
sub edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
cmp edx, eax
mov eax, dword [esp + 0x38]
setge cl
add ecx, 0x4a9f6a25
cmp ecx, dword [eax]
jle 0x1002558b
cmp dword [eax], 0
je 0x1002558b
mov ecx, ebx
jmp 0x1002558d
xor ecx, ecx
mov eax, dword [esp + 0x44]
mov dword [eax], ecx
lea ecx, [esp + 0x44]
call fcn.100039e1
or dword [esp + 0x8c], 0xffffffff
lea ecx, [esp + 0x38]
call fcn.100039e1
mov eax, dword [0x1007d184]
mov esi, 0x270
test al, 1
jne 0x100255f7
or eax, ebx
mov ecx, 0x1571
or dword [0x1007e514], 0xffffffff
mov edx, ebx
mov dword [0x1007d184], eax
mov dword [0x1007d194], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x1007d194], ecx
inc edx
cmp edx, esi
jl 0x100255d6
mov dword [0x1007d190], esi
cmp byte [0x1007d082], 0
jne 0x100257ea
mov dword [esp + 0x14], 0x4580
cmp dword [esp + 0x14], 0x473a
jle 0x1002567a
xor esi, esi
xor edi, edi
xor ebx, ebx
mov ecx, ebx
lea eax, [edi + esi]
shl eax, cl
lea ecx, [esp + 0x50]
cdq
push edx
push eax
call fcn.10001a94
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10025639
mov eax, dword [eax]
push eax
call fcn.10048785
pop ecx
push 0
push 1
lea ecx, [esp + 0x58]
call fcn.10003cd4
inc ebx
cmp ebx, 0x72b5
jl 0x1002561c
inc edi
cmp edi, 0x7cec
jl 0x1002561a
inc esi
cmp esi, 0x208a
jl 0x10025618
push 0
push 0x9cb
push 0x23d8
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
cmp dword [esp + 0x14], 0x44fa
jge 0x1002568f
push str.jkymhl_qjtj_tjituts_mxoasdjh_bpqykasn_hvs_rwwkdmp_igssz_fdnznjknu_ritdoxvrk_knu_hze_hhbdfct
call fcn.10048785
pop ecx
or dword [esp + 0x8c], 0xffffffff
mov dword [esp + 0x1c], 0x5a56
cmp dword [esp + 0x1c], 0x5c1f
jle 0x1002570c
xor esi, esi
mov dword [esp + 0x14], esi
xor edi, edi
mov ecx, edi
mov dword [esp + 0x20], esi
xor ebx, ebx
shl esi, cl
mov eax, esi
lea ecx, [esp + 0x68]
xor eax, ebx
cdq
push edx
push eax
call fcn.10001a94
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x100256d5
mov eax, dword [eax]
push eax
call fcn.10048785
pop ecx
push 0
push 1
lea ecx, [esp + 0x70]
call fcn.10003cd4
inc ebx
cmp ebx, 0x38a6
jl 0x100256bb
mov esi, dword [esp + 0x14]
inc edi
cmp edi, 0x6b31
jl 0x100256b1
inc esi
mov dword [esp + 0x14], esi
cmp esi, 0x1e71
jl 0x100256af
xor ebx, ebx
inc ebx
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x1c], 0x594d
jge 0x10025728
push str.phaxpysk_awkxvred_dhtarbh_fkf
call fcn.10048785
pop ecx
or dword [esp + 0x8c], 0xffffffff
mov dword [esp + 0x20], 0x3629aa81
mov dword [esp + 0x20], 0x4b283066
mov dword [esp + 0x20], ebx
mov dword [esp + 0x20], 0x1d2250db
mov dword [esp + 0x28], 0xfffffffd
mov dword [esp + 0x20], 0
mov dword [esp + 0x14], 0
jmp 0x10025776
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x24], 0x8c6a53d0
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x10025766
mov dword [esp + 0x14], 0
cmp dword [esp + 0x14], 0
jl 0x100257ae
mov eax, dword [esp + 0x14]
cmp dword [esp + eax*4 + 0x24], 0
jne 0x100257ae
push ecx
push ecx
mov byte [esp + 0x17], 0
lea ecx, [esp + 0x17]
call fcn.10026637
dec dword [esp + 0x1c]
pop ecx
pop ecx
jns 0x1002578b
push 0
mov edx, 0x1bba
lea ecx, [esp + 0x2c]
call fcn.1002590f
push ecx
push 0
sub esp, 0xc
mov ecx, 0x508b
push 0x240a
push 0x1007d190
call fcn.10025a1c
add esp, 0x20
mov ecx, 0x1007d082
call fcn.10025c75
mov esi, 0x270
mov dword [esp + 0x2c], 0xffffffff
lea eax, [esp + 0x2c]
push 0
mov dword [esp + 0x38], 0
lea edx, [esp + 0x34]
push eax
lea ecx, [esp + 0x3c]
mov dword [esp + 0x38], 0x83518f4c
call fcn.1002593a
mov eax, dword [0x1007d190]
pop ecx
pop ecx
cmp eax, esi
jne 0x10025861
mov edx, 0x1007d198
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, 0x1007db58
jl 0x10025826
jmp 0x1002586d
cmp eax, 0x4e0
jb 0x10025872
call fcn.100272e1
mov eax, dword [0x1007d190]
mov edx, dword [eax*4 + 0x1007d194]
inc eax
mov dword [0x1007d190], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x1007e514]
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 0x100258d6
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0
je 0x100258d6
push 0x13b7
push 0
push 0x22e0
push 0x219
push 0x15f5
call dword [sym.imp.GDI32.dll_TextOutA]
mov ecx, dword [esp + 0x84]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret