Function at 0x53ffbf
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov eax, 0x30
movzx edx, ax
neg ecx
mov dword [ebp + 0xc], ecx
mov eax, edx
shl edx, 0x10
or eax, edx
shr ecx, 1
mov edi, esi
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
lea esi, [esi + eax*2]
jmp 0x524ca4
mov eax, edi
sub eax, ebx
add eax, 6
cmp ecx, 0x64
jge 0x564dfd
cmp ecx, 0xa
jl 0x53fff5
inc eax
jmp 0x53fff5
movzx edx, byte [ebx]
add dx, 0x30
mov word [esi], dx
inc ebx
add esi, 2
cmp ebx, edi
jae 0x521a69
mov eax, 0x2e
mov word [esi], ax
add esi, 2
mov edi, edi
movzx edx, byte [ebx]
add dx, 0x30
mov word [esi], dx
inc ebx
add esi, 2
cmp ebx, edi
jb 0x521a57
dec ecx
mov eax, 0x65
mov word [esi], ax
js 0x564e05
mov eax, 0x2b
mov word [esi + 2], ax
add esi, 4
cmp ecx, 0x64
jge 0x564e1b
cmp ecx, 0xa
jl 0x521abe
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + 0x30]
mov word [esi], dx
add esi, 2
mov edx, eax
neg edx
add edx, edx
add edx, edx
sub edx, eax
lea eax, [ecx + edx*2]
mov dword [ebp + 0xc], eax
mov ecx, eax
add ecx, 0x30
mov word [esi], cx
xor ecx, ecx
pop edi
mov word [esi + 2], cx
pop esi
lea eax, [ecx + 1]
pop ebx
pop ebp
ret 0xc
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov edx, edi
sub edx, ebx
lea eax, [eax + edx + 3]
jmp 0x53fff5
mov dword [esi], 0x2e0030
add esi, 4
test ecx, ecx
js 0x51fce7
cmp ebx, edi
jae 0x524cba
movzx ecx, byte [ebx]
add cx, 0x30
mov word [esi], cx
inc ebx
add esi, 2
cmp ebx, edi
jb 0x524ca8
xor edx, edx
pop edi
mov word [esi], dx
pop esi
lea eax, [edx + 1]
pop ebx
pop ebp
ret 0xc
mov edx, 0x2e
mov word [esi], dx
add esi, 2
jmp 0x540027
mov eax, 0x30
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
shr ecx, 1
mov edi, esi
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov eax, dword [ebp + 0xc]
lea esi, [esi + eax*2]
xor ecx, ecx
pop edi
mov word [esi], cx
pop esi
lea eax, [ecx + 1]
pop ebx
pop ebp
ret 0xc
mov edi, edi
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ebx, ecx
mov esi, eax
cmp edi, ebx
jbe 0x564df4
mov ecx, dword [ebp + 0xc]
lea eax, [ecx + 5]
cmp eax, 0x1a
ja 0x521a19
test ecx, ecx
jle 0x524c7f
mov eax, edi
sub eax, ebx
lea eax, [ecx + eax + 1]
cmp eax, dword [ebp + 0x10]
jge 0x564df4
lea eax, [ecx + 5]
cmp eax, 0x1a
ja 0x521a38
test ecx, ecx
jle 0x524c93
cmp ebx, edi
jae 0x54002e
movzx eax, byte [ebx]
add ax, 0x30
mov word [esi], ax
add esi, 2
inc ebx
dec ecx
je 0x540045
cmp ebx, edi
jb 0x540016
mov dword [ebp + 0xc], ecx
test ecx, ecx
jg 0x52b02d
xor ecx, ecx
pop edi
mov word [esi], cx
pop esi
lea eax, [ecx + 1]
pop ebx
pop ebp
ret 0xc
cmp ebx, edi
jb 0x524cc9
mov dword [ebp + 0xc], ecx
jmp 0x540036
pop edi
pop esi
xor eax, eax
pop ebx
pop ebp
ret 0xc
add eax, 2
jmp 0x53fff5
mov edx, 0x2d
mov word [esi + 2], dx
add esi, 4
neg ecx
mov dword [ebp + 0xc], ecx
jmp 0x521a84
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + 0x30]
imul eax, eax, 0xffffff9c
add ecx, eax
mov word [esi], dx
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + 0x30]
mov word [esi + 2], dx
add esi, 4
jmp 0x521aac