Function at 0x42c7d0
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 0x42c7fa
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x42c7f5
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
add ebx, 0xa
jmp 0x42c7fc
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 0x42c890
cmp dword [esi + 4], 2
jne 0x42caef
mov ecx, dword [esi + 0x10]
cmp ecx, 1
jne 0x42c9ab
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x20]
movzx edi, byte [eax + ecx - 1]
cmp eax, dword [esi + 0x1c]
jge 0x42caef
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 0x42c841
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 0x42c9a1
lea ecx, [ebx - 0xb]
cmp ecx, 3
ja case.default.0x42c8c6
jmp dword [ecx*4 + 0x42cb04]
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 0x42c990
mov ecx, dword [esi + 0x20]
mov dl, byte [ecx + edi]
add ecx, edi
add dl, al
mov byte [ecx], dl
jmp 0x42c990
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 0x42c990
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 0x42c93d
neg eax
mov ebx, ecx
sub ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
jns 0x42c94f
neg ebx
mov dword [esp + 0x1c], ebx
sub ecx, dword [esp + 0x24]
jns 0x42c957
neg ecx
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jg 0x42c96c
cmp eax, ecx
jg 0x42c96c
add dl, byte [esp + 0x14]
mov byte [edi + ebp], dl
jmp 0x42c990
cmp ebx, ecx
mov cl, byte [esp + 0x14]
jg 0x42c97f
mov al, byte [esp + 0x18]
add al, cl
mov byte [edi + ebp], al
jmp 0x42c990
mov al, byte [esp + 0x24]
add al, cl
mov byte [edi + ebp], al
jmp 0x42c990
mov edx, dword [esi + 0x20]
mov byte [edi + edx], al
mov eax, dword [esi + 0x1c]
inc edi
cmp edi, eax
jl 0x42c879
jmp 0x42c817
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
cmp ecx, 8
jne 0x42c9f0
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x1c]
jge 0x42caef
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 0x42c9c0
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 0x42caef
mov edi, dword [esi + 0x10]
cmp ebp, edi
jge 0x42ca60
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 0x42cac0
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 0x42ca35
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x42caef
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