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

Disassembly:
sub esp, 0x1c
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 4]
cmp eax, 0xa
jl 0x42edfa
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x42edf5
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
add ebx, 0xa
jmp 0x42edfc
mov ebx, eax
push ebp
mov ebp, dword [esi + 0x1c]
push edi
mov edi, dword [esi + 0x18]
xor al, al
xor cl, cl
xor dl, dl
cmp edi, ebp
mov dword [esp + 0x20], ebx
mov byte [esp + 0x13], 0
jl 0x42ee90
cmp dword [esi + 4], 2
jne 0x42f0ef
mov ecx, dword [esi + 0x10]
cmp ecx, 1
jne 0x42efab
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x20]
movzx edi, byte [eax + ecx - 1]
cmp eax, dword [esi + 0x1c]
jge 0x42f0ef
mov edx, dword [esi + 0x20]
lea ebp, [eax + edx]
mov dl, byte [ebp]
movzx ecx, dl
shl edi, 8
or edi, ecx
mov ecx, dword [esi + 0xc]
mov ebx, edi
shr ebx, cl
add eax, 8
xor bl, dl
mov byte [ebp], bl
cmp eax, dword [esi + 0x1c]
jl 0x42ee41
mov edx, dword [esi + 0x18]
pop edi
pop ebp
mov dword [esi + 0x24], edx
pop esi
mov eax, 1
pop ebx
add esp, 0x1c
ret
mov cl, byte [esp + 0x11]
mov ebx, dword [esp + 0x20]
mov al, byte [esp + 0x12]
mov dl, byte [esp + 0x10]
lea esp, [esp]
mov byte [esp + 0x12], cl
mov ecx, dword [esi + 0x20]
mov byte [esp + 0x11], dl
mov dl, byte [edi + ecx]
mov ecx, dword [esi]
mov byte [esp + 0x13], al
mov eax, dword [ecx]
mov byte [esp + 0x10], dl
call dword [eax + 0x18]
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
je 0x42efa1
lea ecx, [ebx - 0xb]
cmp ecx, 3
ja case.default.0x42eec6
jmp dword [ecx*4 + 0x42f104]
mov ecx, dword [esi + 0x20]
mov ebp, dword [esi + 0x18]
mov edx, ecx
sub edx, ebp
mov dl, byte [edx + edi]
add dl, al
mov byte [ecx + edi], dl
jmp 0x42ef90
mov ecx, dword [esi + 0x20]
mov dl, byte [ecx + edi]
add ecx, edi
add dl, al
mov byte [ecx], dl
jmp 0x42ef90
mov ecx, dword [esi + 0x20]
mov ebx, dword [esi + 0x18]
mov edx, ecx
sub edx, ebx
movzx edx, byte [edx + edi]
movzx ebx, byte [ecx + edi]
add edx, ebx
sar edx, 1
add dl, al
mov byte [ecx + edi], dl
jmp 0x42ef90
mov ebp, dword [esi + 0x20]
mov eax, dword [esi + 0x18]
mov ecx, ebp
sub ecx, eax
movzx edx, byte [ecx + edi]
movzx eax, byte [esp + eax + 0x10]
movzx ecx, byte [edi + ebp]
mov dword [esp + 0x18], ecx
sub ecx, eax
add ecx, edx
mov dword [esp + 0x24], eax
mov eax, ecx
sub eax, edx
jns 0x42ef3d
neg eax
mov ebx, ecx
sub ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
jns 0x42ef4f
neg ebx
mov dword [esp + 0x1c], ebx
sub ecx, dword [esp + 0x24]
jns 0x42ef57
neg ecx
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jg 0x42ef6c
cmp eax, ecx
jg 0x42ef6c
add dl, byte [esp + 0x14]
mov byte [edi + ebp], dl
jmp 0x42ef90
cmp ebx, ecx
mov cl, byte [esp + 0x14]
jg 0x42ef7f
mov al, byte [esp + 0x18]
add al, cl
mov byte [edi + ebp], al
jmp 0x42ef90
mov al, byte [esp + 0x24]
add al, cl
mov byte [edi + ebp], al
jmp 0x42ef90
mov edx, dword [esi + 0x20]
mov byte [edi + edx], al
mov eax, dword [esi + 0x1c]
inc edi
cmp edi, eax
jl 0x42ee79
jmp 0x42ee17
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
cmp ecx, 8
jne 0x42eff0
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x1c]
jge 0x42f0ef
lea esp, [esp]
mov ecx, dword [esi + 0x20]
mov ebp, dword [esi + 0xc]
mov bl, byte [ecx + eax]
mov edx, ecx
sub edx, ebp
mov dl, byte [edx + eax]
add bl, dl
mov byte [ecx + eax], bl
mov ecx, dword [esi + 0x1c]
inc eax
cmp eax, ecx
jl 0x42efc0
mov edx, dword [esi + 0x18]
pop edi
pop ebp
mov dword [esi + 0x24], edx
pop esi
mov eax, 1
pop ebx
add esp, 0x1c
ret
mov eax, 1
shl eax, cl
xor bl, bl
xor edx, edx
xor ebp, ebp
dec eax
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0x18]
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], eax
cmp dword [esi + 0x14], edx
mov byte [esp + 0x13], 0
mov byte [esp + 0x12], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x10], bl
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], edx
jle 0x42f0ef
mov edi, dword [esi + 0x10]
cmp ebp, edi
jge 0x42f060
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x20]
movzx eax, byte [eax + ecx]
mov ecx, dword [esp + 0x18]
shl ecx, 8
or eax, ecx
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
add ebp, 8
mov al, byte [esp + 0x12]
mov cl, byte [esp + 0x11]
mov byte [esp + 0x13], al
mov byte [esp + 0x12], cl
mov eax, ebp
sub eax, edi
mov byte [esp + 0x11], bl
mov ebx, dword [esp + 0x18]
mov ecx, eax
shr ebx, cl
mov ecx, dword [esi + 0xc]
mov ebp, eax
mov eax, dword [esp + 0x1c]
add bl, byte [esp + ecx + 0x10]
and bl, byte [esp + 0x28]
mov ecx, edi
shl edx, cl
movzx ecx, bl
add eax, edi
or edx, ecx
cmp eax, 8
mov byte [esp + 0x10], bl
mov dword [esp + 0x1c], eax
jle 0x42f0c0
mov edi, dword [esp + 0x20]
lea ecx, [eax - 8]
mov eax, edx
shr eax, cl
mov ecx, dword [esi + 0x20]
inc edi
mov dword [esp + 0x20], edi
mov byte [edi + ecx - 1], al
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x14]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x42f035
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x42f0ef
mov ecx, 8
sub ecx, eax
mov eax, dword [esi + 0x20]
shl dl, cl
mov ecx, dword [esp + 0x20]
mov byte [ecx + eax], dl
mov edx, dword [esi + 0x18]
pop edi
pop ebp
mov dword [esi + 0x24], edx
pop esi
mov eax, 1
pop ebx
add esp, 0x1c
ret