Function at 0x4513e0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
push esi
push edi
call fcn.004a8030
add esp, 8
test al, al
je 0x451417
add esi, edi
mov ecx, ebx
push esi
push edi
call fcn.004a9110
mov bl, 1
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, ebx
push 0
push esi
call fcn.004a0c70
cmp byte [ebx + 0xb], 0
mov dword [ebp - 0x20], ebx
jns 0x451432
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x20], eax
mov bl, 1
test esi, esi
je 0x451634
xor ecx, ecx
mov dword [ebp - 0x1c], 0
lea eax, [ecx + 1]
mov dword [ebp - 0x10], eax
movzx eax, byte [edi + ecx]
mov edx, eax
test al, al
js 0x4514ee
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov eax, edx
cmp eax, 0xd800
setb cl
lea edx, [eax - 0xe000]
cmp edx, 0x102000
setb dl
or dl, cl
movzx ebx, bl
mov ecx, 0
cmove ebx, ecx
mov ecx, 0xfffd
cmove eax, ecx
cmp eax, 0xffff
ja 0x45149d
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x10], ecx
jmp 0x4514cc
mov ecx, eax
shr ecx, 0xa
add ecx, 0xffffd7c0
mov dword [ebp - 0x18], ecx
and eax, 0x3ff
or eax, 0xdc00
mov edx, dword [ebp - 0x1c]
add edx, 2
mov dword [ebp - 0x10], edx
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x1c]
mov word [edx + ecx*2 + 2], ax
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
mov word [ecx + edx*2], ax
mov edx, dword [ebp - 0x14]
mov ecx, edx
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], eax
cmp edx, esi
jb 0x451445
jmp 0x4515f0
mov dword [ebp - 0x14], esi
xor eax, eax
dec eax
cmp dword [ebp - 0x10], esi
je 0x451461
mov eax, edx
cmp al, 0xe0
jb 0x451556
mov eax, edx
cmp al, 0xef
ja 0x451588
and edx, 0xf
mov dword [ebp - 0x18], edx
movzx eax, byte [edx + str._000000000000]
mov ecx, dword [ebp - 0x10]
movzx ecx, byte [edi + ecx]
mov edx, ecx
shr ecx, 5
bt eax, ecx
jae 0x4515e2
and dl, 0x3f
mov dword [ebp - 0x24], edx
mov ecx, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x14], esi
xor eax, eax
dec eax
mov edx, ecx
mov dword [ebp - 0x10], ecx
cmp ecx, esi
je 0x451461
mov ecx, dword [ebp - 0x18]
shl ecx, 6
movzx eax, byte [ebp - 0x24]
or eax, ecx
jmp 0x451565
mov eax, edx
cmp al, 0xc2
jb 0x4515e2
and edx, 0x1f
mov eax, edx
mov ecx, dword [ebp - 0x10]
movzx ecx, byte [edi + ecx]
xor ecx, 0x80
cmp cl, 0x3f
ja 0x4515e2
shl eax, 6
or eax, ecx
mov edx, dword [ebp - 0x10]
inc edx
mov dword [ebp - 0x14], edx
jmp 0x451461
mov eax, edx
cmp al, 0xf4
ja 0x4515e2
add edx, 0xffffff10
mov eax, dword [ebp - 0x10]
movzx eax, byte [edi + eax]
mov dword [ebp - 0x28], eax
shr eax, 4
movsx eax, byte [eax + 0x57c7f1]
mov dword [ebp - 0x18], edx
bt eax, edx
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov eax, 0xffffffff
jae 0x451461
add ecx, 2
mov dword [ebp - 0x14], esi
xor eax, eax
dec eax
cmp ecx, esi
je 0x451461
mov al, byte [edi + ecx]
add al, 0x80
mov dword [ebp - 0x24], eax
cmp al, 0x3f
ja 0x451677
jmp 0x45165e
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
xor eax, eax
dec eax
jmp 0x451461
and bl, 1
mov esi, dword [ebp + 0x10]
mov ecx, esi
push 0
push dword [ebp - 0x10]
call fcn.004a0c70
mov al, byte [esi + 0xb]
test al, al
js 0x45163d
mov ecx, eax
or cl, 7
cmp al, 5
movzx eax, cl
mov ecx, 4
cmovb eax, ecx
movzx eax, al
cmp eax, ecx
je 0x45140d
mov ecx, dword [ebp + 0x10]
push eax
call fcn.004457d0
jmp 0x45140d
mov dword [ebp - 0x10], 0
jmp 0x4515f3
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 4]
mov ecx, eax
or ecx, 7
cmp eax, 5
mov eax, 4
cmovae eax, ecx
mov ecx, 0x7fffffff
and ecx, dword [edx + 8]
dec ecx
jmp 0x45161e
mov eax, dword [ebp - 0x18]
shl eax, 6
mov edx, dword [ebp - 0x28]
and edx, 0x3f
or eax, edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x10], ecx
jmp 0x451531
mov dword [ebp - 0x14], ecx
jmp 0x4515e8