Function at 0x5ce623
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x328
mov eax, dword [0x10148050]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ecx, dword [edi]
mov edx, dword [edi + 4]
xor esi, esi
mov dword [ebp - 0x328], eax
mov eax, dword [ecx + 0x18]
push edx
mov dword [ebp - 0x324], esi
mov dword [ebp - 0x320], esi
mov dword [ebp - 0x31c], esi
call eax
mov ebx, dword [ebp + 0x10]
add ebx, 3
add esp, 4
and ebx, 0xfffffffc
mov dword [ebp - 0x318], eax
mov dword [ebp + 0x10], ebx
jle 0x5ce6ba
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov eax, dword [ecx + 0x1c]
push edx
call eax
movzx ecx, al
mov eax, ecx
and eax, 0xf
add esp, 4
mov byte [ebp + esi - 0x314], al
cmp al, 0xc
ja 0x5ce7f5
shr ecx, 4
mov byte [ebp + esi - 0x313], cl
cmp cl, 0xc
ja 0x5ce7f5
add esi, 2
cmp esi, ebx
jl 0x5ce67b
mov ecx, ebx
and cl, 7
cmp cl, 4
jne 0x5ce702
mov edx, dword [edi]
mov eax, dword [edi + 4]
mov ecx, dword [edx + 0x1c]
push eax
call ecx
shl eax, 8
cdq
mov esi, eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x320], edx
mov edx, dword [edi]
mov ecx, dword [edx + 0x1c]
push eax
call ecx
cdq
add esp, 8
add esi, eax
adc dword [ebp - 0x320], edx
mov dword [ebp - 0x324], esi
mov dword [ebp - 0x31c], 0x10
mov dword [ebp - 0x318], 0
test ebx, ebx
jle 0x5ce7e2
mov edx, dword [ebp - 0x318]
movzx ebx, byte [ebp + edx - 0x314]
cmp dword [ebp - 0x31c], ebx
jge 0x5ce76d
xor esi, esi
lea esp, [esp]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov edx, dword [eax + 0x1c]
push ecx
call edx
mov ecx, esi
xor ecx, 8
add ecx, dword [ebp - 0x31c]
cdq
add esp, 4
call fcn.0064bdc3
add dword [ebp - 0x324], eax
adc dword [ebp - 0x320], edx
add esi, 8
cmp esi, 0x20
jl 0x5ce733
add dword [ebp - 0x31c], 0x20
mov eax, dword [ebp - 0x324]
mov edx, dword [ebp - 0x320]
mov ecx, 0x10
sub ecx, ebx
mov esi, 0xffff
sar esi, cl
mov ecx, ebx
and esi, eax
call fcn.0064c1c3
sub dword [ebp - 0x31c], ebx
mov dword [ebp - 0x324], eax
lea ecx, [ebx - 1]
mov eax, 1
shl eax, cl
mov dword [ebp - 0x320], edx
test esi, eax
jne 0x5ce7c2
mov edx, 1
mov ecx, ebx
shl edx, cl
mov eax, 1
sub eax, edx
add esi, eax
mov eax, dword [ebp - 0x318]
mov ecx, dword [ebp - 0x328]
mov word [ecx + eax*2], si
inc eax
mov dword [ebp - 0x318], eax
cmp eax, dword [ebp + 0x10]
jl 0x5ce714
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0057371d
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x318]
mov ecx, dword [edi]
mov eax, dword [edi + 4]
mov ecx, dword [ecx + 8]
push 0
push edx
push eax
call ecx
mov esi, dword [ebp - 0x328]
lea eax, [ebx - 1]
shr eax, 3
add esp, 0xc
add esi, 4
inc eax
mov dword [ebp - 0x318], eax
nop
push 6
lea edx, [ebp - 0x14]
push edx
push edi
call fcn.005c6013
mov eax, dword [ebp - 0x14]
mov dx, ax
shr dx, 4
mov ecx, 0xffffff00
and dx, cx
mov ecx, dword [ebp - 0x10]
mov bx, cx
shr bx, 8
and bx, 0xfff0
or dx, bx
movzx ebx, word [ebp - 0xc]
shr bx, 0xc
or dx, bx
mov word [esi - 4], dx
mov dx, word [ebp - 0x12]
shr dx, 4
mov ebx, 0xffffff00
and dx, bx
movzx ebx, word [ebp - 0xe]
shr bx, 8
and bx, 0xfff0
or dx, bx
movzx ebx, word [ebp - 0xa]
and eax, 0xfff
shr bx, 0xc
or dx, bx
mov word [esi - 2], dx
mov edx, dword [ebp - 0xc]
mov word [esi], ax
mov eax, dword [ebp - 0x12]
and eax, 0xfff
and ecx, 0xfff
mov word [esi + 2], ax
mov eax, dword [ebp - 0xa]
mov word [esi + 4], cx
mov ecx, dword [ebp - 0xe]
and eax, 0xfff
and ecx, 0xfff
and edx, 0xfff
mov word [esi + 0xa], ax
mov word [esi + 6], cx
mov word [esi + 8], dx
mov eax, 1
add esp, 0xc
add esi, 0x10
sub dword [ebp - 0x318], eax
jne 0x5ce823
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0057371d
mov esp, ebp
pop ebp
ret