Function at 0x438962
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x28
mov dword [esp + 0x10], 0xbbb8b986
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xe
ja 0x4388fb
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + ecx]
add edx, 0xa9916937
add eax, 0xa9916937
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xc]
add al, 0x7f
mov ecx, dword [esp]
mov byte [esp + ecx + 0x10], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xf
jb 0x4388c0
mov eax, dword [esp + 0x10]
mov eax, dword fs:[eax]
xor ecx, ecx
cmp dword [ebp + 8], 0
sete cl
jmp dword [ecx*4 + 0x4458cc]
mov edx, dword [eax + 0xc]
add edx, 0xc
mov dword [esp + 4], 0
mov esi, dword [case.0x43890b.7]
mov edi, dword [edx]
xor eax, eax
cmp edi, edx
setne al
mov dword [esp + 8], edx
jmp dword [eax*4 + 0x4458d4]
jmp dword [ebx*4 + 0x4458fc]
mov edi, dword [edi]
xor eax, eax
cmp edi, edx
setne al
jmp dword [eax*4 + 0x4458d4]
jmp esi
mov ecx, dword [edi + 0x30]
xor eax, eax
test ecx, ecx
setne al
mov ebx, 1
jmp dword [eax*4 + 0x4458ec]
mov edx, dword [ebp + 8]
nop
nop
nop
nop
nop
movzx eax, word [edx]
movzx ebx, word [ecx]
test ax, ax
je 0x438996
add edx, 2
add ecx, 2
cmp ax, bx
je 0x438980
xor ecx, ecx
cmp ax, bx
sete cl
mov edx, dword [esp + 8]
mov ebx, 1
jmp dword [ecx*4 + 0x4458f4]
mov eax, dword [edi + 0x18]
mov dword [esp + 4], eax
xor eax, eax
jmp dword [eax*4 + 0x4458fc]
mov eax, dword [eax + 8]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
jmp 0x438a71
movzx eax, word [ecx]
mov dword [esp + 8], 0x8b8a6b59
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0xf
ja 0x438af4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 8]
lea edi, [edx + esi]
add edi, 0xef4ede42
add edx, 0x42
and edx, esi
add edx, edx
mov esi, edx
xor esi, edi
not edx
and edx, edi
add edx, edx
sub edx, esi
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
add dl, 0x32
mov esi, dword [esp]
mov byte [esp + esi + 8], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0x10
jb 0x438ab0
xor ebx, ebx
cmp dword [esp + 8], eax
sete bl
xor edx, edx
jmp dword [ebx*4 + 0x44590c]
mov eax, dword [ecx + 0x3c]
mov esi, dword [ecx + eax]
mov dword [esp + 0x18], esi
mov dword [esp + 8], 0xf3f2083c
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp], 0
mov edi, dword [esp]
cmp edi, 0xb
ja 0x438b7d
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, dword [esp]
mov ebx, dword [esp]
movzx ebx, byte [esp + ebx + 8]
lea esi, [edi + ebx]
add esi, 0xcaae911e
add edi, 0xcaae911e
and edi, ebx
add edi, edi
sub esi, edi
mov dword [esp + 4], esi
mov ebx, dword [esp + 4]
add bl, 0x2e
mov esi, dword [esp]
mov byte [esp + esi + 8], bl
inc dword [esp]
mov esi, dword [esp]
cmp esi, 0xc
jb 0x438b40
xor ebx, ebx
mov esi, dword [esp + 0x18]
cmp esi, dword [esp + 8]
sete bl
jmp dword [ebx*4 + 0x445914]
mov ecx, 1
jmp dword [ecx*4 + 0x44591c]
mov eax, dword [ecx + eax + 0x50]
mov edx, 1
xor ecx, ecx
jmp dword [ecx*4 + 0x44591c]
mov ecx, dword [case.0x438aff.0]
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ecx, ecx
test edx, edx
sete cl
jmp dword [ecx*4 + 0x445934]
jmp 0x438bd4
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret