Function at 0x429da0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x1c
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 4]
cmp eax, 0xf
jne 0x429dca
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x429dc5
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
add ebx, 0xa
jmp 0x429dcc
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
jge 0x429f0f
jmp 0x429e00
mov cl, byte [esp + 0x11]
mov ebx, dword [esp + 0x20]
mov al, byte [esp + 0x12]
mov dl, byte [esp + 0x10]
lea ecx, [ecx]
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 0x429f0f
lea ecx, [ebx - 0xb]
cmp ecx, 3
ja case.default.0x429e36
jmp dword [ecx*4 + 0x42a0c4]
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 0x429f03
mov ecx, dword [esi + 0x20]
mov dl, byte [ecx + edi]
add ecx, edi
add dl, al
mov byte [ecx], dl
jmp 0x429f03
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 0x429f03
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 0x429eb0
neg eax
mov ebx, ecx
sub ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
jns 0x429ec2
neg ebx
mov dword [esp + 0x1c], ebx
sub ecx, dword [esp + 0x24]
jns 0x429eca
neg ecx
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jg 0x429edf
cmp eax, ecx
jg 0x429edf
add dl, byte [esp + 0x14]
mov byte [edi + ebp], dl
jmp 0x429f03
cmp ebx, ecx
mov cl, byte [esp + 0x14]
jg 0x429ef2
mov al, byte [esp + 0x18]
add al, cl
mov byte [edi + ebp], al
jmp 0x429f03
mov al, byte [esp + 0x24]
add al, cl
mov byte [edi + ebp], al
jmp 0x429f03
mov edx, dword [esi + 0x20]
mov byte [edi + edx], al
mov eax, dword [esi + 0x1c]
inc edi
cmp edi, eax
jl 0x429ded
cmp dword [esi + 4], 2
jne 0x42a0af
mov ecx, dword [esi + 0x10]
cmp ecx, 1
jne 0x429f6d
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x20]
movzx edi, byte [eax + ecx - 1]
cmp eax, dword [esi + 0x1c]
jge 0x42a0af
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 0x429f35
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
cmp ecx, 8
jne 0x429fb0
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x1c]
jge 0x42a0af
mov edi, edi
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 0x429f80
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 0x42a0af
mov edi, dword [esi + 0x10]
cmp ebp, edi
jge 0x42a020
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 0x42a080
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 0x429ff5
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x42a0af
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