Function at 0x4e8010
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4e83ea
sub esp, 0x4c
mov eax, dword [esp + 0x5c]
shl eax, 6
movzx edx, byte [esp + 0x68]
test dl, dl
je 0x4e803c
or eax, 0x20
mov edx, dword [esp + 0x60]
cmp edx, 0x1f
jl 0x4e8389
mov ebx, dword [esp + 0x54]
lea ebp, [ebx + 1]
mov esi, dword [esp + 0x58]
cmp ebp, esi
ja 0x4e8342
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x54], ebp
or eax, 0x1f
mov byte [ecx + ebx], al
mov eax, edx
sar edx, 0x1f
mov dword [esp + 0x2c], edx
mov ebx, edx
mov edi, eax
xor eax, eax
mov dword [esp + 0x28], eax
mov eax, edi
jmp 0x4e80a5
shr eax, 7
mov ebx, edx
shl edx, 0x19
or eax, edx
sar ebx, 7
mov edx, dword [esp + 0x28]
inc edx
mov ebp, dword [esp + 0x54]
mov edi, dword [esp + 0x60]
mov dword [esp + 0x28], edx
mov edx, ebx
mov ebx, dword [esp + 0x2c]
test edx, edx
xchg edi, ebx
setg bl
xchg edi, ebx
test eax, eax
seta bl
test edx, edx
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, ebx
or edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
jne 0x4e8081
mov eax, dword [esp + 0x28]
dec eax
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x54]
jmp 0x4e80f1
mov byte [edi + edx], bl
mov edx, edi
lea edi, [ebp - 1]
mov ebx, dword [esp + 0x60]
mov ebp, esi
mov esi, eax
mov ecx, edx
mov edx, dword [esp + 0x2c]
mov eax, edi
test eax, eax
jl 0x4e81df
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], ebp
mov dword [esp + 0x44], esi
lea edi, [eax + eax*2]
lea esi, [eax + edi*2 - 0x20]
mov dword [esp + 0x40], esi
cmp esi, 0x20
sbb ebp, ebp
xchg esi, ebx
neg ebx
xchg esi, ebx
cmp esi, 0x20
sbb ebx, ebx
lea edi, [eax + edi*2]
mov dword [esp + 0x3c], edi
cmp edi, 0x20
sbb eax, eax
shr edi, 5
cmp edi, 1
sbb edi, edi
mov dword [esp + 0x38], edi
xchg ebp, ebx
not ebx
xchg ebp, ebx
mov edi, dword [esp + 0x40]
or ebp, edi
mov edi, ecx
mov ecx, esi
mov esi, edx
shl edx, cl
and edx, ebx
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x60]
shr ebx, cl
and ebx, eax
or ebx, edx
mov ecx, ebp
mov eax, esi
sar esi, cl
mov edx, dword [esp + 0x38]
xor edx, 0xffffffff
and edx, esi
or edx, ebx
mov ebx, edx
and edx, 0x7f
mov ebp, dword [esp + 0x30]
test ebp, ebp
je 0x4e81db
or ebx, 0xffffff80
mov edx, dword [esp + 0x48]
lea esi, [edx + 1]
mov ecx, eax
mov eax, dword [esp + 0x44]
cmp esi, eax
jbe 0x4e80d9
mov byte [esp + 0x22], bl
lea ecx, [0x5db380]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], esi
call fcn.00445150
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea esi, [eax + 1]
mov edx, dword [esp + 0x48]
movzx ebx, byte [esp + 0x22]
mov ebp, dword [esp + 0x30]
mov eax, ecx
mov ecx, dword [esp + 0x2c]
jmp 0x4e80d9
mov ebx, edx
jmp 0x4e817d
mov dword [esp + 0x54], ebp
mov eax, dword [esp + 0x64]
cmp eax, 0x80
jl 0x4e82fd
mov edx, eax
mov ebx, 1
jmp 0x4e81ff
inc ebx
sar eax, 8
cmp eax, 0xff
jg 0x4e81fb
lea eax, [ebp + 1]
cmp eax, esi
ja 0x4e82bd
or ebx, 0xffffff80
mov byte [ecx + ebp], bl
nop
mov ebx, edx
mov ebp, 1
jmp 0x4e8225
inc ebp
sar edx, 8
cmp edx, 0xff
jg 0x4e8221
jmp 0x4e8240
mov byte [edi + eax], bl
mov eax, dword [esp + 0x48]
mov ebx, edx
mov eax, ebp
mov ecx, edi
mov ebp, dword [esp + 0x48]
test ebp, ebp
jle 0x4e82ad
lea edx, [ebp - 1]
mov dword [esp + 0x48], edx
shl edx, 3
cmp edx, 0x20
sbb edi, edi
lea ebp, [eax + 1]
xchg edi, ebx
not ebx
xchg edi, ebx
or edx, edi
mov edi, ecx
mov ecx, edx
mov edx, ebx
sar ebx, cl
cmp esi, ebp
jae 0x4e822f
mov dword [esp + 0x34], eax
mov dword [esp + 0x44], ebx
lea ecx, [0x5db380]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebp
call fcn.00445150
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
lea ebp, [eax + 1]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x44]
jmp 0x4e822f
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], esi
add esp, 0x4c
ret
mov dword [esp + 0x24], ebx
lea edx, [0x5db380]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
call fcn.00445150
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
inc eax
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x54]
jmp 0x4e8211
lea edx, [ebp + 1]
cmp esi, edx
jb 0x4e830b
mov byte [ecx + ebp], al
mov eax, edx
jmp 0x4e82ad
lea eax, [0x5db380]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edx
call fcn.00445150
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
lea edx, [eax + 1]
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x54]
jmp 0x4e8304
mov byte [esp + 0x23], al
lea eax, [0x5db380]
mov dword [esp], eax
mov ecx, dword [esp + 0x50]
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebp
call fcn.00445150
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
lea ebp, [eax + 1]
movzx eax, byte [esp + 0x23]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x54]
jmp 0x4e8060
or eax, edx
mov edx, dword [esp + 0x54]
lea ebx, [edx + 1]
mov ebp, dword [esp + 0x58]
cmp ebp, ebx
jb 0x4e83aa
mov ecx, dword [esp + 0x50]
mov byte [ecx + edx], al
mov esi, ebp
mov ebp, ebx
jmp 0x4e81df
mov byte [esp + 0x23], al
lea eax, [0x5db380]
mov dword [esp], eax
mov ecx, dword [esp + 0x50]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ebx
call fcn.00445150
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ebx, [eax + 1]
movzx eax, byte [esp + 0x23]
mov edx, dword [esp + 0x54]
jmp 0x4e839e
call fcn.0045c8b0
jmp fcn.004e8010