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

Disassembly:
push ebp
push edi
push esi
push ebx
push eax
mov eax, 0x1418
call fcn.00491680
sub esp, eax
mov eax, dword [esp + eax]
lea ebp, [esp + 0x88]
lea esi, [esp + 0x90]
mov dword [esp], ebp
lea ecx, [esp + 0xa4c]
mov dword [esp + 0x24], edx
mov ebx, eax
mov dword [esp + 0x90], 0x61666564
mov dword [esp + 0x88], esi
mov dword [esp + 0x93], 0x746c7561
mov dword [esp + 0x8c], 7
mov byte [esp + 0x97], 0
call fcn.00527fa0
sub esp, 4
mov edx, dword [esp + 0x88]
cmp edx, esi
je 0x465d6b
mov eax, dword [esp + 0x90]
mov dword [esp], edx
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
lea ecx, [esp + 0xa4c]
call fcn.00528230
mov ecx, 1
mov dword [esp + 0x88], eax
mov edx, eax
lea esi, [esi]
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul eax, eax, 0x6c078965
lea edx, [eax + ecx]
mov dword [ebp + ecx*4], edx
add ecx, 1
cmp ecx, 0x270
jne 0x465d88
lea eax, [esp + 0x60]
mov dword [esp + 0x34], 0x64
mov dword [esp + 0xa48], 0x270
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x5c], 1
mov dword [esp + 0x18], 0xa
mov dword [esp + 0x58], eax
movzx eax, word [0x58eef0]
mov word [esp + 0x60], ax
lea eax, [esp + 0x60]
mov dword [esp + 0x28], eax
mov edi, eax
jmp 0x465e41
mov ebx, dword [esp + 0x5c]
lea eax, [esp + 0x60]
movzx edx, byte [edx + str.abcdefghijklmnopqrstuvwxyz]
lea esi, [ebx + 1]
cmp edi, eax
je 0x465ee8
mov eax, dword [esp + 0x60]
cmp eax, esi
jb 0x465e70
sub dword [esp + 0x18], 1
mov byte [edi + ebx], dl
mov eax, dword [esp + 0x58]
mov dword [esp + 0x5c], esi
mov byte [eax + ebx + 1], 0
je 0x465f43
mov edi, dword [esp + 0x58]
mov ecx, ebp
mov ebx, 0x1a
call fcn.00460080
mul ebx
cmp eax, 0x15
ja 0x465e00
lea esi, [esi]
mov ecx, ebp
mov esi, 0x1a
call fcn.00460080
mul esi
cmp eax, 0x15
jbe 0x465e58
jmp 0x465e00
test esi, esi
js 0x466612
add eax, eax
mov dword [esp + 0x1c], eax
cmp esi, eax
jb 0x466191
mov eax, ebx
add eax, 2
js 0x466199
mov dword [esp + 0x1c], esi
mov dword [esp], eax
mov byte [esp + 0x20], dl
call fcn.0054fb80
test ebx, ebx
movzx edx, byte [esp + 0x20]
mov edi, eax
jne 0x465f10
mov ecx, dword [esp + 0x58]
lea eax, [esp + 0x60]
cmp ecx, eax
je 0x465ed4
mov eax, dword [esp + 0x60]
mov dword [esp], ecx
mov byte [esp + 0x20], dl
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
movzx edx, byte [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x58], edi
mov dword [esp + 0x60], eax
jmp 0x465e22
cmp esi, 0x10
jne 0x465e22
mov dword [esp], 0x1f
mov byte [esp + 0x20], dl
call fcn.0054fb80
mov dword [esp + 0x1c], 0x1e
movzx edx, byte [esp + 0x20]
mov edi, eax
mov ecx, dword [esp + 0x58]
cmp ebx, 1
je 0x466187
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp], edi
mov byte [esp + 0x30], dl
mov dword [esp + 0x20], ecx
call sub.msvcrt.dll_memcpy
movzx edx, byte [esp + 0x30]
mov ecx, dword [esp + 0x20]
jmp 0x465eb0
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x5c]
mov byte [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
mov ebx, dword [edi + 4]
mov edi, dword [edi]
lea esi, [eax + ebx]
mov dword [esp + 0x30], edi
lea edi, [esp + 0x78]
mov dword [esp + 0x70], edi
cmp esi, 0xf
ja 0x465f98
test ebx, ebx
jns 0x4663e8
mov dword [esp], 0x58dc1c
call fcn.00552550
lea esi, [esi]
test esi, esi
js 0x466612
cmp esi, 0x1d
jbe 0x4663b5
mov eax, esi
add eax, 1
js 0x466199
mov dword [esp], eax
call fcn.0054fb80
mov edx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
mov ecx, eax
lea eax, [edx + 1]
test edx, edx
je 0x4664f3
test eax, eax
jne 0x466390
lea eax, [esp + 0x78]
cmp edi, eax
je 0x466000
mov eax, dword [esp + 0x78]
mov dword [esp], edi
mov dword [esp + 0x38], ecx
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x38]
mov eax, 0x7fffffff
mov dword [esp + 0x70], ecx
sub eax, edx
mov dword [esp + 0x78], esi
cmp eax, ebx
jb 0x465f85
lea edi, [ebx + edx]
cmp esi, edi
jb 0x466291
test ebx, ebx
je 0x466049
add edx, ecx
cmp ebx, 1
je 0x4663c4
mov eax, dword [esp + 0x30]
mov dword [esp + 8], ebx
mov dword [esp], edx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x74], edi
mov eax, 0x7fffffff
mov ebx, dword [esp + 0x1c]
mov byte [ecx + edi], 0
mov edi, dword [esp + 0x74]
sub eax, edi
cmp eax, ebx
jb 0x465f85
lea esi, [ebx + edi]
mov ebx, dword [esp + 0x70]
lea eax, [esp + 0x78]
cmp ebx, eax
je 0x4664c7
mov eax, dword [esp + 0x78]
cmp eax, esi
jb 0x4661d0
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4660b2
add ebx, edi
cmp eax, 1
je 0x4663d6
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x74], esi
lea eax, [esp + 0x4c]
mov byte [ebx + esi], 0
mov edx, dword [esp + 0x70]
call fcn.004822c0
mov edx, dword [esp + 0x70]
lea eax, [esp + 0x78]
cmp edx, eax
je 0x4660e6
mov eax, dword [esp + 0x78]
mov dword [esp], edx
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
cmp byte [esp + 0x4c], 0
mov ecx, dword [esp + 0x58]
je 0x46619e
mov esi, dword [esp + 0x24]
mov eax, 0x7fffffff
mov ebp, dword [esp + 0x5c]
mov ebx, dword [esp + 0x2c]
mov edx, dword [esi + 4]
sub eax, edx
cmp eax, ebp
jb 0x465f85
mov eax, esi
mov esi, dword [esi]
lea edi, [ebp + edx]
add eax, 8
mov dword [esp + 0x18], eax
cmp esi, eax
je 0x466528
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 8]
cmp eax, edi
jb 0x4663fe
test ebp, ebp
jne 0x46636a
mov eax, dword [esp + 0x24]
mov dword [eax + 4], edi
lea eax, [esp + 0x60]
mov byte [esi + edi], 0
mov edx, dword [esp + 0x58]
mov byte [ebx], 1
cmp edx, eax
je 0x46616e
mov eax, dword [esp + 0x60]
mov dword [esp], edx
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
lea ecx, [esp + 0xa4c]
call fcn.00527ef0
add esp, 0x141c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [ecx]
mov byte [edi], al
jmp 0x465eb0
test eax, eax
jns 0x466574
call fcn.005523a0
lea eax, [esp + 0x60]
cmp ecx, eax
je 0x466590
mov eax, dword [esp + 0x60]
mov dword [esp], ecx
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
sub dword [esp + 0x34], 1
jne 0x465dc6
jmp 0x46659b
test esi, esi
js 0x466612
add eax, eax
mov dword [esp + 0x18], eax
cmp esi, eax
jae 0x4661f0
test eax, eax
js 0x466199
add eax, 1
jmp 0x4661fb
mov eax, esi
add eax, 1
js 0x466199
mov dword [esp + 0x18], esi
mov dword [esp], eax
call fcn.0054fb80
mov edx, dword [esp + 0x70]
mov ebx, eax
test edi, edi
je 0x46622e
cmp edi, 1
je 0x4665d6
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 0x30], edx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x466265
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x466265
add edi, ebx
cmp eax, 1
je 0x4665c8
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 0x30], edx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x78]
cmp edx, eax
je 0x466280
mov eax, dword [esp + 0x78]
mov dword [esp], edx
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
mov eax, dword [esp + 0x18]
mov dword [esp + 0x70], ebx
mov dword [esp + 0x78], eax
jmp 0x4660b2
test edi, edi
js 0x466612
add esi, esi
cmp edi, esi
jb 0x466564
mov eax, edi
add eax, 1
js 0x466199
mov esi, edi
mov dword [esp], eax
mov dword [esp + 0x38], edx
call fcn.0054fb80
mov edx, dword [esp + 0x38]
mov ecx, eax
test edx, edx
je 0x46651b
mov eax, dword [esp + 0x70]
mov dword [esp + 0x38], eax
cmp edx, 1
je 0x4665be
mov dword [esp + 8], edx
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], ecx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
test edx, edx
je 0x466336
test ebx, ebx
je 0x466336
mov eax, dword [esp + 0x18]
add eax, ecx
cmp ebx, 1
je 0x4665b0
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x30]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 0x18], ecx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x38]
lea eax, [esp + 0x78]
cmp ebx, eax
je 0x46635d
mov eax, dword [esp + 0x78]
mov dword [esp], ebx
mov dword [esp + 0x18], ecx
add eax, 1
mov dword [esp + 4], eax
call fcn.0054fb40
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x78], esi
jmp 0x466049
add esi, edx
cmp ebp, 1
je 0x466554
mov dword [esp], esi
mov dword [esp + 8], ebp
mov dword [esp + 4], ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x24]
mov esi, dword [eax]
jmp 0x466141
mov dword [esp], ecx
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], ecx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
jmp 0x465fd9
mov esi, 0x1e
mov eax, 0x1f
jmp 0x465fb4
mov eax, dword [esp + 0x30]
movzx eax, byte [eax]
mov byte [edx], al
mov ecx, dword [esp + 0x70]
jmp 0x466049
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
mov byte [ebx], al
mov ebx, dword [esp + 0x70]
jmp 0x4660b2
cmp ebx, 0xf
ja 0x4664fd
mov edi, ebx
xor edx, edx
lea ecx, [esp + 0x78]
jmp 0x466022
test edi, edi
js 0x466612
add eax, eax
mov dword [esp + 0x1c], eax
cmp edi, eax
jb 0x466580
mov eax, edi
add eax, 1
js 0x466199
mov dword [esp + 0x1c], edi
mov dword [esp], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], edx
call fcn.0054fb80
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov esi, eax
test edx, edx
je 0x466470
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
cmp edx, 1
je 0x4665ea
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], edx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
test ecx, ecx
je 0x466493
test ebp, ebp
je 0x466493
add edx, esi
cmp ebp, 1
je 0x4665e0
mov dword [esp + 8], ebp
mov dword [esp + 4], ecx
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x24]
mov eax, dword [edx]
cmp dword [esp + 0x18], eax
je 0x4664b5
mov edx, dword [edx + 8]
mov dword [esp], eax
mov dword [esp + 0x18], edx
add edx, 1
mov dword [esp + 4], edx
call fcn.0054fb40
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov dword [eax], esi
mov dword [eax + 8], edx
jmp 0x466141
cmp esi, 0xf
jbe 0x466087
test esi, esi
js 0x466612
cmp esi, 0x1d
ja 0x4661f0
mov dword [esp + 0x18], 0x1e
mov eax, 0x1f
jmp 0x4661fb
movzx eax, byte [edi]
mov byte [ecx], al
jmp 0x465fd9
cmp ebx, 0x1d
ja 0x4665f4
mov dword [esp], 0x1f
mov edi, ebx
mov esi, 0x1e
call fcn.0054fb80
mov ecx, eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x38], eax
jmp 0x4662ff
cmp edi, 0xf
jbe 0x466139
test edi, edi
js 0x466612
cmp edi, 0x1d
ja 0x466414
mov dword [esp + 0x1c], 0x1e
mov eax, 0x1f
jmp 0x466423
movzx eax, byte [ecx]
mov byte [esi], al
mov eax, dword [esp + 0x24]
mov esi, dword [eax]
jmp 0x466141
test esi, esi
js 0x466199
lea eax, [esi + 1]
jmp 0x4662b0
add eax, 1
jmp 0x465e95
test eax, eax
js 0x466199
add eax, 1
jmp 0x466423
sub dword [esp + 0x34], 1
jne 0x465dc6
mov ebx, dword [esp + 0x2c]
mov dword [ebx + 4], 0
mov byte [ebx], 0
jmp 0x46616e
mov ebx, dword [esp + 0x30]
movzx edx, byte [ebx]
mov byte [eax], dl
jmp 0x466336
movzx eax, byte [eax]
mov byte [ecx], al
jmp 0x4662fb
mov eax, dword [esp + 0x20]
movzx eax, byte [eax]
mov byte [edi], al
jmp 0x466265
movzx eax, byte [edx]
mov byte [ebx], al
jmp 0x46622e
movzx eax, byte [ecx]
mov byte [edx], al
jmp 0x466493
movzx eax, byte [eax]
mov byte [esi], al
jmp 0x466470
mov eax, ebx
add eax, 1
js 0x466199
mov dword [esp], eax
mov edi, ebx
mov esi, ebx
call fcn.0054fb80
mov ecx, eax
jmp 0x46651b
mov dword [esp], 0x58dc04
call fcn.00552550
nop