Function at 0x42e860
Capabilities:
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 0x42e88a
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x42e885
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
add ebx, 0xa
jmp 0x42e88c
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 0x42e920
cmp dword [esi + 4], 2
jne 0x42eb7f
mov ecx, dword [esi + 0x10]
cmp ecx, 1
jne 0x42ea3b
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x20]
movzx edi, byte [eax + ecx - 1]
cmp eax, dword [esi + 0x1c]
jge 0x42eb7f
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 0x42e8d1
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 0x42ea31
lea ecx, [ebx - 0xb]
cmp ecx, 3
ja case.default.0x42e956
jmp dword [ecx*4 + 0x42eb94]
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 0x42ea20
mov ecx, dword [esi + 0x20]
mov dl, byte [ecx + edi]
add ecx, edi
add dl, al
mov byte [ecx], dl
jmp 0x42ea20
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 0x42ea20
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 0x42e9cd
neg eax
mov ebx, ecx
sub ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
jns 0x42e9df
neg ebx
mov dword [esp + 0x1c], ebx
sub ecx, dword [esp + 0x24]
jns 0x42e9e7
neg ecx
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jg 0x42e9fc
cmp eax, ecx
jg 0x42e9fc
add dl, byte [esp + 0x14]
mov byte [edi + ebp], dl
jmp 0x42ea20
cmp ebx, ecx
mov cl, byte [esp + 0x14]
jg 0x42ea0f
mov al, byte [esp + 0x18]
add al, cl
mov byte [edi + ebp], al
jmp 0x42ea20
mov al, byte [esp + 0x24]
add al, cl
mov byte [edi + ebp], al
jmp 0x42ea20
mov edx, dword [esi + 0x20]
mov byte [edi + edx], al
mov eax, dword [esi + 0x1c]
inc edi
cmp edi, eax
jl 0x42e909
jmp 0x42e8a7
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
cmp ecx, 8
jne 0x42ea80
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x1c]
jge 0x42eb7f
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 0x42ea50
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 0x42eb7f
mov edi, dword [esi + 0x10]
cmp ebp, edi
jge 0x42eaf0
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 0x42eb50
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 0x42eac5
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x42eb7f
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