Function at 0x1c4b1a0
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.01c710e0
add esp, 8
test al, al
je 0x1c4b1d7
add esi, edi
mov ecx, ebx
push esi
push edi
call fcn.01c717b0
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.01c6f550
cmp byte [ebx + 0xb], 0
mov dword [ebp - 0x20], ebx
jns 0x1c4b1f2
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x20], eax
mov bl, 1
test esi, esi
je 0x1c4b3f4
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 0x1c4b2ae
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 0x1c4b25d
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x10], ecx
jmp 0x1c4b28c
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 0x1c4b205
jmp 0x1c4b3b0
mov dword [ebp - 0x14], esi
xor eax, eax
dec eax
cmp dword [ebp - 0x10], esi
je 0x1c4b221
mov eax, edx
cmp al, 0xe0
jb 0x1c4b316
mov eax, edx
cmp al, 0xef
ja 0x1c4b348
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 0x1c4b3a2
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 0x1c4b221
mov ecx, dword [ebp - 0x18]
shl ecx, 6
movzx eax, byte [ebp - 0x24]
or eax, ecx
jmp 0x1c4b325
mov eax, edx
cmp al, 0xc2
jb 0x1c4b3a2
and edx, 0x1f
mov eax, edx
mov ecx, dword [ebp - 0x10]
movzx ecx, byte [edi + ecx]
xor ecx, 0x80
cmp cl, 0x3f
ja 0x1c4b3a2
shl eax, 6
or eax, ecx
mov edx, dword [ebp - 0x10]
inc edx
mov dword [ebp - 0x14], edx
jmp 0x1c4b221
mov eax, edx
cmp al, 0xf4
ja 0x1c4b3a2
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 + 0x1cf5621]
mov dword [ebp - 0x18], edx
bt eax, edx
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov eax, 0xffffffff
jae 0x1c4b221
add ecx, 2
mov dword [ebp - 0x14], esi
xor eax, eax
dec eax
cmp ecx, esi
je 0x1c4b221
mov al, byte [edi + ecx]
add al, 0x80
mov dword [ebp - 0x24], eax
cmp al, 0x3f
ja 0x1c4b437
jmp 0x1c4b41e
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
xor eax, eax
dec eax
jmp 0x1c4b221
and bl, 1
mov esi, dword [ebp + 0x10]
mov ecx, esi
push 0
push dword [ebp - 0x10]
call fcn.01c6f550
mov al, byte [esi + 0xb]
test al, al
js 0x1c4b3fd
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 0x1c4b1cd
mov ecx, dword [ebp + 0x10]
push eax
call fcn.01c484d0
jmp 0x1c4b1cd
mov dword [ebp - 0x10], 0
jmp 0x1c4b3b3
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 0x1c4b3de
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 0x1c4b2f1
mov dword [ebp - 0x14], ecx
jmp 0x1c4b3a8