Function at 0x10025adb
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1005993b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x280
push ebx
mov dword [esp + 0xc], 0x3ddb
cmp dword [esp + 0xc], 0x3e8f
push esi
push edi
mov dword [esp + 0x10], ecx
jle 0x10025b67
xor esi, esi
xor edi, edi
mov ecx, edi
mov eax, esi
shl eax, cl
lea ecx, [esp + 0x108]
cdq
push edx
push eax
call fcn.10001a55
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10025b38
mov eax, dword [eax]
push eax
call fcn.10040afc
pop ecx
push 0
push 1
lea ecx, [esp + 0x110]
call fcn.1000b217
inc edi
cmp edi, 0x350f
jl 0x10025b19
inc esi
cmp esi, 0x2bf0
jl 0x10025b17
call dword [sym.imp.USER32.dll_GetDoubleClickTime]
cmp dword [esp + 0x14], 0x3aa3
jge 0x10025b7c
push str.lld_bdxckim_twi_ulhhzqu_bnrldnnrw_ipwebndhe_ihtz_lihnbvb_hhbx_nghren_nyqdday
call fcn.10040afc
pop ecx
or dword [esp + 0x294], 0xffffffff
cmp byte [ebp + 0x38], 0
je 0x10025c2c
mov ebx, dword [ebp + 0x34]
xor ecx, ecx
mov esi, dword [ebp + 0x14]
mov edi, dword [ebp + 0x18]
mov edx, dword [ebp + 0x10]
mov eax, dword [ebx]
mov eax, dword [esi]
mov eax, dword [edi]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [esi]
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0
mov eax, dword [eax]
mov eax, dword [edx]
mov eax, dword [ebp + 8]
mov dword [eax], 1
mov eax, dword [edi]
cmp eax, 1
setle cl
cmp ecx, dword [edx]
jne 0x10025bd2
cmp dword [esi], 0
jne 0x10025bd2
mov eax, dword [esi]
mov eax, dword [edx]
xor ecx, ecx
cmp eax, 0xda74
mov eax, dword [esi]
setge cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esi]
setg dl
xor ecx, ecx
sub edx, eax
mov eax, dword [ebp + 0x2c]
mov dword [eax], edx
mov eax, dword [eax]
cmp eax, 0xf19
mov eax, dword [esp + 0x10]
setge cl
mov dword [eax], ecx
mov ecx, dword [eax]
mov eax, dword [ebp + 0x30]
mov dword [eax], ecx
xor ecx, ecx
mov eax, dword [ebx]
mov eax, dword [edi]
cmp eax, 0xfffffff8
mov eax, dword [ebp + 0x20]
setle cl
mov eax, dword [eax]
sub ecx, eax
mov eax, dword [ebp + 0x28]
add ecx, 0xeb64
mov dword [eax], ecx
jmp 0x1002612b
mov eax, dword [0x103969fc]
test al, 1
jne 0x10025c4f
or dword [0x10397d94], 0xffffffff
or eax, 1
push ecx
push 0x1571
mov dword [0x103969fc], eax
call fcn.10027a7c
push 3
lea ecx, [esp + 0x54]
call fcn.1000adae
mov dword [esp + 0x294], 2
mov dword [esp + 0x40], 4
mov dword [esp + 0x48], 0x4868fdad
mov dword [esp + 0x30], 0x5950cfdf
mov dword [esp + 0x14], 0x186f
cmp dword [esp + 0x14], 0x19c4
jle 0x10025cd9
xor esi, esi
xor edi, edi
mov eax, edi
lea ecx, [esp + 0xf0]
xor eax, esi
cdq
push edx
push eax
call fcn.10001a55
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10025cb0
mov eax, dword [eax]
push eax
call fcn.10040afc
pop ecx
push 0
push 1
lea ecx, [esp + 0xf8]
call fcn.1000b217
inc edi
cmp edi, 0x4cb9
jl 0x10025c93
inc esi
cmp esi, 0x4236
jl 0x10025c91
mov dword [esp + 0x2c], 0xd42ad01
cmp dword [esp + 0x14], 0x15d0
jge 0x10025cf6
push str.etik_psep_dnebmr_kvlhmri_avgwumgt_qqbtyud_izknodeg_ucjzl_ymfxomjd_qku_cdqlmcani_xzgyfbnix
call fcn.10040afc
pop ecx
mov dword [esp + 0x294], 2
lea eax, [esp + 0x50]
mov dword [esp + 0x3c], 0xffffffff
lea edx, [esp + 0x5c]
mov dword [esp + 0x34], 0x59c3f908
mov dword [esp + 0x38], 0xffffffff
push eax
call fcn.10025abf
mov dword [esp + 0x14], 0x26de
cmp dword [esp + 0x14], 0xdef
pop ecx
jge 0x10025f3b
call fcn.10041222
push eax
push 0x10065754
push str.in.txt
call fcn.100413d1
add esp, 0xc
call fcn.10041222
add eax, 0x20
push eax
push 0x10065760
push str.out.txt
call fcn.100413d1
add esp, 0xc
lea eax, [esp + 0x1c]
push eax
push 0x100619a4
jmp 0x10025f24
xor ebx, ebx
test edi, edi
jle 0x10025da7
lea esi, [esp + 0x78]
push esi
push 0x100619a4
call fcn.100407fb
mov edi, dword [esp + 0x24]
inc ebx
pop ecx
add esi, 4
mov dword [esp + 0x1c], edi
pop ecx
cmp ebx, edi
jl 0x10025d8a
xor eax, eax
test edi, edi
jle 0x10025dc1
lea ecx, [eax + 1]
mov eax, dword [esp + eax*4 + 0x78]
mov dword [esp + eax*4 + 0x120], ecx
mov eax, ecx
cmp eax, edi
jl 0x10025dad
xor ebx, ebx
cmp edi, 2
jl 0x10025ee7
lea esi, [esp + edi*4 + 0x74]
mov dword [esp + 0x14], esi
mov ecx, dword [esp + edi*4 + 0x120]
cmp ecx, edi
je 0x10025ed2
cmp ecx, 1
je 0x10025e5e
and dword [esp + 0x20], 0
mov eax, ecx
cdq
sub eax, edx
mov dword [esp + ebx*4 + 0x1a0], ecx
sar eax, 1
inc ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], eax
test eax, eax
jle 0x10025e5e
mov ebx, dword [esp + 0x20]
lea ecx, [esp + ecx*4 + 0x74]
mov dword [esp + 0x10], ecx
mov edi, eax
mov eax, dword [ecx]
mov esi, dword [esp + ebx*4 + 0x78]
mov dword [esp + ebx*4 + 0x78], eax
mov dword [ecx], esi
mov edx, dword [esp + ebx*4 + 0x78]
inc ebx
mov eax, dword [esp + esi*4 + 0x120]
mov ecx, dword [esp + edx*4 + 0x120]
mov dword [esp + edx*4 + 0x120], eax
mov dword [esp + esi*4 + 0x120], ecx
mov ecx, dword [esp + 0x10]
sub ecx, 4
mov dword [esp + 0x10], ecx
cmp ebx, edi
jl 0x10025e16
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
and dword [esp + 0x28], 0
mov eax, edi
cdq
sub eax, edx
mov dword [esp + ebx*4 + 0x1a0], edi
sar eax, 1
inc ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], eax
test eax, eax
jle 0x10025ed2
mov edi, dword [esp + 0x28]
mov ecx, esi
mov dword [esp + 0x10], ecx
mov ebx, eax
mov eax, dword [ecx]
mov esi, dword [esp + edi*4 + 0x78]
mov dword [esp + edi*4 + 0x78], eax
mov dword [ecx], esi
mov edx, dword [esp + edi*4 + 0x78]
inc edi
mov eax, dword [esp + esi*4 + 0x120]
mov ecx, dword [esp + edx*4 + 0x120]
mov dword [esp + edx*4 + 0x120], eax
mov dword [esp + esi*4 + 0x120], ecx
mov ecx, dword [esp + 0x10]
sub ecx, 4
mov dword [esp + 0x10], ecx
cmp edi, ebx
jl 0x10025e8a
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
dec edi
sub esi, 4
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], esi
cmp edi, 2
jge 0x10025dd4
push ebx
mov edi, 0x100619a4
push edi
call fcn.10040afc
pop ecx
xor esi, esi
pop ecx
test ebx, ebx
jle 0x10025f13
push dword [esp + esi*4 + 0x1a0]
push 0x1006576c
call fcn.10040afc
inc esi
pop ecx
pop ecx
cmp esi, ebx
jl 0x10025efb
push 0x10065770
call fcn.10040afc
pop ecx
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.100407fb
mov edi, dword [esp + 0x24]
mov dword [esp + 0x20], edi
pop ecx
pop ecx
test edi, edi
jne 0x10025d80
lea eax, [esp + 0x3c]
push eax
push ecx
push 0x1f2d
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x4c]
push eax
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x58]
call fcn.10026d0a
add esp, 0x14
lea eax, [esp + 0x38]
lea edx, [esp + 0x40]
push eax
push ecx
push ecx
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.100268cf
or dword [esp + 0x2b4], 0xffffffff
lea ecx, [esp + 0x70]
add esp, 0x20
call fcn.1000ae31
lea eax, [esp + 0x44]
mov dword [esp + 0x44], 0
push eax
push 0
push 0x4c7
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0xfffffff8
push 0x3bd1
push eax
mov edx, 0x2c69
mov ecx, 0xbc3
call fcn.10027690
add esp, 0x14
call fcn.100264ff
cmp byte [0x10396908], 0
jne 0x10026015
push ecx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.10027a7c
push 0x5556
push 0x2b5f
push 0x3216
push 0x10396908
push 0
mov edx, 0x39cf
mov cl, 1
call fcn.10026648
add esp, 0x14
mov dword [esp + 0x10], 0x4511
cmp dword [esp + 0x10], 0x4700
jle 0x1002607b
xor esi, esi
xor edi, edi
xor ebx, ebx
mov eax, edi
lea ecx, [esp + 0x60]
cdq
idiv ebx
xor edx, esi
mov eax, edx
cdq
push edx
push eax
call fcn.10001a55
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1002604c
mov eax, dword [eax]
push eax
call fcn.10040afc
pop ecx
push 0
push 1
lea ecx, [esp + 0x68]
call fcn.1000b217
inc ebx
cmp ebx, 0x6a6b
jl 0x1002602d
inc edi
cmp edi, 0x48d8
jl 0x1002602b
inc esi
cmp esi, 0x8021
jl 0x10026029
mov eax, dword [0x10396a10]
cmp eax, 0x270
jne 0x100260c7
mov edx, 0x10396a18
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, 0x103973d8
jl 0x1002608c
jmp 0x100260d3
cmp eax, 0x4e0
jb 0x100260d8
call fcn.10027ab7
mov eax, dword [0x10396a10]
mov edx, dword [eax*4 + 0x10396a14]
inc eax
mov dword [0x10396a10], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x10397d94]
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 + 0x44]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
cmp dword [esp + 0x10], 0x4365
mov dword [eax], ecx
jge 0x1002612b
push str.geimuomei_qpj_uhkfcbl_idok_ywej_xbwhegywm_lnbtubt
call fcn.10040afc
pop ecx
mov ecx, dword [esp + 0x28c]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret