Function at 0x4368a0
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 0x4368ca
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x4368c5
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
add ebx, 0xa
jmp 0x4368cc
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 0x436960
cmp dword [esi + 4], 2
jne 0x436bbf
mov ecx, dword [esi + 0x10]
cmp ecx, 1
jne 0x436a7b
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x20]
movzx edi, byte [eax + ecx - 1]
cmp eax, dword [esi + 0x1c]
jge 0x436bbf
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 0x436911
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 0x436a71
lea ecx, [ebx - 0xb]
cmp ecx, 3
ja case.default.0x436996
jmp dword [ecx*4 + 0x436bd4]
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 0x436a60
mov ecx, dword [esi + 0x20]
mov dl, byte [ecx + edi]
add ecx, edi
add dl, al
mov byte [ecx], dl
jmp 0x436a60
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 0x436a60
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 0x436a0d
neg eax
mov ebx, ecx
sub ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
jns 0x436a1f
neg ebx
mov dword [esp + 0x1c], ebx
sub ecx, dword [esp + 0x24]
jns 0x436a27
neg ecx
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
jg 0x436a3c
cmp eax, ecx
jg 0x436a3c
add dl, byte [esp + 0x14]
mov byte [edi + ebp], dl
jmp 0x436a60
cmp ebx, ecx
mov cl, byte [esp + 0x14]
jg 0x436a4f
mov al, byte [esp + 0x18]
add al, cl
mov byte [edi + ebp], al
jmp 0x436a60
mov al, byte [esp + 0x24]
add al, cl
mov byte [edi + ebp], al
jmp 0x436a60
mov edx, dword [esi + 0x20]
mov byte [edi + edx], al
mov eax, dword [esi + 0x1c]
inc edi
cmp edi, eax
jl 0x436949
jmp 0x4368e7
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
add esp, 0x1c
ret
cmp ecx, 8
jne 0x436ac0
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x1c]
jge 0x436bbf
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 0x436a90
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 0x436bbf
mov edi, dword [esi + 0x10]
cmp ebp, edi
jge 0x436b30
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 0x436b90
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 0x436b05
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x436bbf
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