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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa4
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
xor eax, eax
mov dword [ebp - 0x18], ebx
xor esi, esi
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x24], eax
mov dl, byte [edi + 0x2ed]
movzx ecx, byte [edi + 0x2f1]
mov dword [ebp - 4], ecx
cmp dl, 1
jne 0x484749
test byte [edi + 0x422], dl
je 0x4845e5
movzx esi, word [edi + 0x2e8]
mov edx, dword [ebp + 8]
mov eax, ebx
sub eax, esi
mov dword [ebp - 0x24], 1
cmp word [edi + 0x420], 0
movzx ecx, byte [eax + edx - 1]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0xc], ecx
jge 0x4846e1
sub edx, esi
lea esi, [ebx - 1]
add esi, edx
mov dword [ebp - 0xc], edx
lea eax, [edx - 1]
mov bl, byte [esi]
mov byte [ebp - 5], bl
movzx ebx, bl
mov dword [ebp - 0x1c], ebx
sub ebx, edx
add ebx, dword [ebp - 4]
shr ebx, 0x1f
dec bl
mov dword [ebp - 0x20], eax
cmp eax, 0xff
jle 0x484644
mov dword [ebp - 0x20], 0xff
jmp 0x484648
test eax, eax
jle 0x484674
mov edi, dword [ebp - 0x20]
xor edx, edx
mov ah, byte [ebp - 5]
mov ecx, dword [ebp - 0x1c]
lea esi, [esi - 1]
mov al, byte [esi + 1]
sub ecx, edx
shr ecx, 0x1f
xor al, ah
dec cl
inc edx
and cl, al
or bl, cl
cmp edx, edi
jl 0x484650
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0xc]
sub edx, dword [ebp - 4]
lea eax, [ebp - 0xa4]
push 1
push 1
push dword [ebp + 0xc]
sub edx, ecx
push ecx
dec edx
push edx
push dword [ebp - 0x18]
push eax
mov eax, dword [edi + 0x1bc]
push edi
call eax
movzx ecx, byte [edi + 0x2f1]
mov esi, eax
mov edx, dword [ebp - 0xc]
lea eax, [ebp - 0xa4]
push eax
push ecx
mov ecx, dword [ebp - 0x18]
call fcn.00484e10
or al, bl
add esp, 0x28
not al
mov cl, al
shr cl, 4
and al, cl
movzx eax, al
mov ecx, eax
shr ecx, 2
and ecx, eax
mov eax, ecx
shr eax, 1
and eax, ecx
dec eax
add eax, esi
je 0x484744
pop edi
pop esi
mov eax, 0xfffffecf
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, edx
xor esi, esi
sub eax, dword [ebp - 4]
push 1
push 1
push dword [ebp + 0xc]
lea edx, [eax - 1]
cmp ecx, edx
mov dword [ebp - 0x18], edx
cmova ecx, esi
cmp dword [ebp - 0xc], edx
mov dword [ebp - 0x14], ecx
cmovbe esi, dword [ebp - 0x1c]
sub eax, esi
push esi
dec eax
push eax
push ebx
lea eax, [ebp - 0x64]
push eax
mov eax, dword [edi + 0x1bc]
push edi
call eax
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x64]
mov dword [ebp - 0x10], eax
sub ebx, esi
mov eax, dword [ebp - 4]
dec edx
sub ebx, eax
push eax
add edx, ebx
call fcn.0048c2a0
add esp, 0x24
test eax, eax
jne 0x4846d5
cmp dword [ebp - 0x10], eax
jne 0x4846d5
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0xc], eax
ja 0x4846d5
mov eax, dword [ebp - 0x14]
jmp 0x484794
test dl, dl
jne 0x484797
mov esi, dword [ebp + 8]
mov eax, esi
push 1
push 1
push dword [ebp + 0xc]
sub eax, ecx
push 0xffffffffffffffff
push eax
push ebx
lea eax, [ebp - 0x64]
push eax
mov eax, dword [edi + 0x1bc]
push edi
call eax
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x64]
mov eax, dword [ebp - 4]
sub ebx, eax
push eax
lea edx, [esi + ebx]
call fcn.0048c2a0
add esp, 0x24
test eax, eax
jne 0x4846d5
cmp dword [ebp - 0x10], eax
jne 0x4846d5
mov ecx, dword [ebp - 4]
cmp byte [edi + 0x2ed], 2
jne 0x4847b5
mov eax, dword [ebp + 0x10]
movzx ecx, word [edi + 0x2ea]
pop edi
pop esi
mov dword [eax], ecx
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
add ecx, dword [ebp - 0x24]
add ecx, eax
mov eax, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
mov dword [eax], ecx
xor eax, eax
mov esp, ebp
pop ebp
ret