Function at 0x4094e0
Capabilities:
Contain obfuscated stackstrings
Encode data using xor
Encrypt data using rc4 prga
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
mov edi, dword [ebp + 8]
mov dword [esp + 0x7c], ecx
add edi, dword [ecx + 0x60]
mov dword [esp + 0x80], 0x3f26240b
mov dword [esp + 0x84], 0x7c3c2329
mov dword [esp + 0x88], 0x303c2a02
mov dword [esp + 0x8c], 0x2b37496c
mov dword [esp + 0x90], 0x3b393a2a
mov dword [esp + 0x94], 0x13323a31
mov dword [esp + 0x98], 0xa4f154f
mov dword [esp + 0x9c], 0xa030f04
mov dword [esp + 0xa0], 0x6062661a
mov word [esp + 0xa4], 0x9164
mov dword [esp + 0xa6], 0
mov dword [esp + 0xaa], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xb2], 0
mov dword [esp + 0xb6], 0
mov dword [esp + 0xba], 0
mov word [esp + 0xbe], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x3f
ja 0x409613
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x80]
mov edx, eax
and edx, 0x28f7bbc9
xor eax, 0xa8f7bbc9
lea edx, [eax + edx*2]
lea eax, [edx + ecx]
and edx, ecx
add edx, edx
sub eax, edx
add al, 0x81
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x80], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x40
jb 0x4095d0
mov dword [esp + 0xd7], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0x5b506c7a
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1a
ja 0x4096be
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0xc0]
lea eax, [ecx + edx]
add eax, 0x34d0578c
add ecx, 0x34d0578c
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x2c
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0xc0], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1b
jb 0x409680
mov dword [esp + 0x10], 0xc6c4f8f9
mov dword [esp + 0x14], 0x3a3af4f0
mov dword [esp + 0x18], 0x3f423c09
mov dword [esp + 0x1c], 0x32373e43
mov dword [esp + 0x20], 0xa374342
mov dword [esp + 0x24], 0x5409efed
mov dword [esp + 0x28], 0x512f5956
mov dword [esp + 0x2c], 0x2602145c
mov dword [esp + 0x30], 0x54595d53
mov dword [esp + 0x34], 0x641f5521
mov dword [esp + 0x38], 0x19d23366
mov dword [esp + 0x3c], 0x2a6b6f63
mov dword [esp + 0x40], 0x1a661c10
mov dword [esp + 0x44], 0x674d93f
mov dword [esp + 0x48], 0xcd270871
mov dword [esp + 0x4c], 0x27a080a
mov dword [esp + 0x50], 0x1ca2ac2
mov dword [esp + 0x54], 0x57b7d01
mov dword [esp + 0x58], 0x567f0075
mov word [esp + 0x5c], 0x91be
mov dword [esp + 0x5e], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 0x51
ja 0x4097b8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0xc50e337a
add ecx, 0xc50e337a
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xaa
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 0x52
jb 0x409780
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x10]
mov edx, edi
test cl, cl
je 0x4097db
lea esi, [esp + 0x11]
mov edx, edi
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4097d0
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x4097fb
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4097f0
mov byte [edx], 0
movzx eax, byte [esp + 0xc0]
test al, al
je 0x40982b
lea ecx, [esp + 0xc1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409820
mov ebx, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x80]
test al, al
mov dword [esp + 0x78], edi
je 0x40985b
lea ecx, [esp + 0x81]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409850
mov byte [edx], 0
mov esi, dword [ebp + 0x14]
mov ecx, esi
shr ecx, 2
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, esi
mov eax, esi
and eax, 0xfffffffc
lea esi, [edx + eax]
add eax, ebx
mov ebx, ecx
and ebx, 3
mov ecx, ebx
shr ecx, 1
mov edi, eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], esi
mov edi, esi
mov esi, dword [esp + 0x74]
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov ecx, dword [ebp + 0x14]
test cl, 1
je 0x4098bf
mov edi, dword [ebp + 0x14]
mov ecx, edi
not ecx
or ecx, 0xfffffffe
add ebx, ecx
mov ecx, edi
and ecx, 2
movzx eax, byte [eax + ebx + 1]
mov esi, dword [esp + 0x70]
mov byte [esi + ecx], al
mov dword [esp + 0x10], 0x3e3f1b19
mov dword [esp + 0x14], 0x2a2ef4f6
mov dword [esp + 0x18], 0xfa2ff8f8
mov dword [esp + 0x1c], 0xc0cdfdf0
mov dword [esp + 0x20], 0xd5d4c0c5
mov dword [esp + 0x24], 0x212308c5
mov word [esp + 0x28], 0x2321
mov byte [esp + 0x2a], 0x52
mov dword [esp + 0x2b], 0
mov dword [esp + 0x2f], 0
mov word [esp + 0x33], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x80]
cmp eax, 0x24
mov edi, dword [esp + 0x78]
ja 0x409981
nop
nop
nop
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x80]
movzx esi, byte [esp + eax + 0x10]
lea eax, [ecx - 0x46a1402e]
add ecx, 0xd2
or ecx, eax
and ecx, esi
or eax, esi
sub eax, ecx
mov ecx, eax
or ecx, 0x41
and eax, 0x41
add eax, ecx
inc al
mov ecx, dword [esp + 0x80]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0x80]
mov eax, dword [esp + 0x80]
cmp eax, 0x25
jb 0x409930
add edx, dword [ebp + 0x14]
movzx eax, byte [esp + 0x10]
test al, al
je 0x4099ab
lea ecx, [esp + 0x11]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4099a0
mov byte [edx], 0
sub edx, edi
mov eax, dword [esp + 0x7c]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10