Function at 0x4097e0
Capabilities:
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], 0x170c0e5b
mov dword [esp + 0x84], 0x421a0309
mov dword [esp + 0x88], 0xe02187c
mov dword [esp + 0x8c], 0x36fad46
mov dword [esp + 0x90], 0x13696804
mov dword [esp + 0x94], 0xb101811
mov dword [esp + 0x98], 0x14570957
mov dword [esp + 0x9c], 0x5c23275e
mov dword [esp + 0xa0], 0x8e808c34
mov word [esp + 0xa4], 0xb58e
mov dword [esp + 0xa6], 0
mov dword [esp + 0xaa], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xb2], 0
mov word [esp + 0xb6], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x37
ja 0x4098ee
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x80]
lea eax, [ecx + 0x18b485c4]
add ecx, 0xc4
or ecx, eax
and ecx, edx
or eax, edx
sub eax, ecx
add al, 0xa4
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x80], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x38
jb 0x4098b0
mov word [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0xc3c8cc22
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x11
ja 0x409991
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx esi, byte [esp + eax + 0xc0]
lea eax, [edx + 0x6cde1ba0]
lea ecx, [edx + esi]
add ecx, 0x6cde1ba0
add edx, 0xa0
and edx, esi
and eax, esi
add eax, edx
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
add al, 0xa0
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0xc0], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x12
jb 0x409940
mov dword [esp + 0x10], 0xd0320605
mov dword [esp + 0x14], 0xd42c0202
mov dword [esp + 0x18], 0x27dcd205
mov dword [esp + 0x1c], 0xdcdf24d3
mov dword [esp + 0x20], 0x2cdfd3d0
mov dword [esp + 0x24], 0xee3d4749
mov dword [esp + 0x28], 0xe1e7e9ec
mov dword [esp + 0x2c], 0xe83422e6
mov dword [esp + 0x30], 0xfee5e5e3
mov dword [esp + 0x34], 0xfef7fdf5
mov dword [esp + 0x38], 0xf94c23fc
mov dword [esp + 0x3c], 0x34f3f7f3
mov dword [esp + 0x40], 0xfcf00202
mov dword [esp + 0x44], 0xf80ab9d7
mov dword [esp + 0x48], 0xb5df060d
mov dword [esp + 0x4c], 0xc0c0e08
mov dword [esp + 0x50], 0x11b4d8b0
mov dword [esp + 0x54], 0x1d131515
mov dword [esp + 0x58], 0xc0171ee9
mov word [esp + 0x5c], 0x81a4
mov dword [esp + 0x69], 0
mov dword [esp + 0x66], 0
mov dword [esp + 0x62], 0
mov dword [esp + 0x5e], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 0x5c
ja 0x409aa6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + 0x167bcecd]
mov esi, ecx
not esi
or esi, edx
and edx, ecx
add edx, esi
sub eax, edx
add al, 0x31
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 0x5d
jb 0x409a70
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x10]
mov edx, edi
test cl, cl
je 0x409acb
lea esi, [esp + 0x11]
mov edx, edi
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409ac0
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x409aeb
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 0x409ae0
mov byte [edx], 0
movzx eax, byte [esp + 0xc0]
test al, al
je 0x409b1b
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 0x409b10
mov ebx, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x80]
test al, al
mov dword [esp + 0x78], edi
je 0x409b4b
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 0x409b40
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 0x409ba5
xor ebx, 1
and ebx, ecx
and ecx, 2
movzx eax, byte [eax + ebx]
mov esi, dword [esp + 0x70]
mov byte [esi + ecx], al
mov dword [esp + 0x10], 0xb0b7d3d5
mov dword [esp + 0x14], 0xb4b86a6c
mov dword [esp + 0x18], 0x7cb76662
mov dword [esp + 0x1c], 0x7a79657a
mov dword [esp + 0x20], 0x6d6a7e61
mov dword [esp + 0x24], 0xc9c3ae79
mov word [esp + 0x28], 0xcbcd
mov byte [esp + 0x2a], 0xdc
mov dword [esp + 0x2b], 0
mov dword [esp + 0x2f], 0
mov dword [esp + 0x33], 0
mov dword [esp + 0x37], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x80]
cmp eax, 0x2a
mov edi, dword [esp + 0x78]
ja 0x409c67
nop
nop
nop
nop
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x80]
movzx esi, byte [esp + eax + 0x10]
lea eax, [ecx + esi]
add eax, 0xe1
add ecx, 0xe1
and ecx, esi
add ecx, ecx
sub eax, ecx
add al, 0xd9
mov ecx, dword [esp + 0x80]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0x80]
mov eax, dword [esp + 0x80]
cmp eax, 0x2b
jb 0x409c20
add edx, dword [ebp + 0x14]
movzx eax, byte [esp + 0x10]
test al, al
je 0x409c8b
lea ecx, [esp + 0x11]
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 0x409c80
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