Function at 0x529f30
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe4
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov ebx, edx
mov edi, eax
mov esi, dword [ebp + 8]
cmp byte [0x583b40], 0
je 0x529fad
test esi, esi
je 0x529fad
cmp dword [esi + 0x470], 0
je 0x529fad
mov eax, esi
call fcn.00522d64
call fcn.0055f3b4
test al, al
je 0x529fad
mov eax, esi
call fcn.00522d8c
call fcn.0055f3b4
test al, al
je 0x529fad
xor eax, eax
mov al, byte [ebp + 0x10]
push eax
push 0
push 0
push edi
mov eax, dword [ebp - 4]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov eax, esi
call fcn.00522d8c
push eax
mov eax, esi
call fcn.00522d64
xor ecx, ecx
mov cl, bl
pop edx
call fcn.0055f4a8
test al, al
jne case.0x529fba.5
xor eax, eax
mov al, bl
cmp eax, 7
ja case.0x529fba.5
jmp dword [eax*4 + 0x529fc1]
mov al, byte [ebp + 0x10]
dec al
jne case.0x529fba.5
mov ecx, dword [ebp + 0xc]
mov edx, edi
mov eax, dword [ebp - 4]
call fcn.00508f8c
jmp case.0x529fba.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x529fba.5
mov dword [ebp - 0x18], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
mov eax, dword [ebp - 0x18]
movzx eax, word [eax]
shr eax, 8
mov edx, dword [ebp - 0x10]
mov byte [edx + 2], al
mov eax, dword [ebp - 0x18]
movzx eax, word [eax + 2]
shr eax, 8
mov edx, dword [ebp - 0x10]
mov byte [edx + 1], al
mov eax, dword [ebp - 0x18]
movzx eax, word [eax + 4]
shr eax, 8
mov edx, dword [ebp - 0x10]
mov byte [edx], al
add dword [ebp - 0x10], 3
add dword [ebp - 0x18], 6
dec ebx
jne 0x52a01f
jmp case.0x529fba.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x529fba.5
mov dword [ebp - 0x18], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
mov eax, dword [ebp - 0x18]
mov al, byte [eax]
and al, 0xff
mov edx, dword [ebp - 0x10]
mov byte [edx + 2], al
mov eax, dword [ebp - 0x18]
mov al, byte [eax + 2]
and al, 0xff
mov edx, dword [ebp - 0x10]
mov byte [edx + 1], al
mov eax, dword [ebp - 0x18]
mov al, byte [eax + 4]
and al, 0xff
mov edx, dword [ebp - 0x10]
mov byte [edx], al
add dword [ebp - 0x10], 3
add dword [ebp - 0x18], 6
dec ebx
jne 0x52a07e
jmp case.0x529fba.5
mov al, byte [ebp + 0x10]
dec al
je 0x52a1bf
dec al
je 0x52a0d6
sub al, 2
je 0x52a113
dec al
je 0x52a15e
jmp case.0x529fba.5
mov dword [ebp - 0x10], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
mov eax, dword [ebp - 0x10]
mov dl, byte [eax + 2]
shl edx, 0x10
mov dx, word [eax]
push edx
call fcn.00529ea8
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
add dword [ebp - 0x10], 3
add dword [ebp - 0xc], 4
dec ebx
jne 0x52a0ec
jmp case.0x529fba.5
mov dword [ebp - 0x10], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 8], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
mov eax, dword [ebp - 0x10]
mov dl, byte [eax + 2]
shl edx, 0x10
mov dx, word [eax]
push edx
lea eax, [ebp - 0x1c]
call fcn.00552258
mov eax, dword [ebp - 8]
mov dx, word [ebp - 0x1c]
mov word [eax], dx
mov dl, byte [ebp - 0x1a]
mov byte [eax + 2], dl
add dword [ebp - 0x10], 3
add dword [ebp - 8], 3
dec ebx
jne 0x52a129
jmp case.0x529fba.5
mov dword [ebp - 0x10], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
mov ecx, dword [ebp - 0x10]
xor eax, eax
mov al, byte [ecx + 2]
mov edx, dword [0x5796bc]
imul dword [edx]
xor edx, edx
mov dl, byte [ecx + 1]
mov esi, dword [0x57961c]
imul edx, dword [esi]
add eax, edx
xor edx, edx
mov dl, byte [ecx]
mov ecx, dword [0x57933c]
imul edx, dword [ecx]
add eax, edx
mov ecx, 0x64
cdq
idiv ecx
mov edx, dword [ebp - 0x14]
mov byte [edx], al
add dword [ebp - 0x10], 3
inc dword [ebp - 0x14]
dec ebx
jne 0x52a174
jmp case.0x529fba.5
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx + ecx*2]
mov edx, edi
mov eax, dword [ebp - 4]
call fcn.00407618
jmp case.0x529fba.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x529fba.5
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
call fcn.00529e50
mov eax, dword [ebp - 0x10]
mov dx, word [ebp - 0x1c]
mov word [eax], dx
mov dl, byte [ebp - 0x1a]
mov byte [eax + 2], dl
add dword [ebp - 0x10], 3
add dword [ebp - 0xc], 4
dec ebx
jne 0x52a1f5
jmp case.0x529fba.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x529fba.5
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
mov eax, dword [ebp - 0xc]
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
mov dl, 0xff
sub dl, byte [eax + 1]
mov byte [eax + 1], dl
mov dl, 0xff
sub dl, byte [eax + 2]
mov byte [eax + 2], dl
mov dl, 0xff
sub dl, byte [eax + 3]
mov byte [eax + 3], dl
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
call fcn.00529e50
mov eax, dword [ebp - 0x10]
mov dx, word [ebp - 0x1c]
mov word [eax], dx
mov dl, byte [ebp - 0x1a]
mov byte [eax + 2], dl
add dword [ebp - 0x10], 3
add dword [ebp - 0xc], 4
add dword [ebp - 0xc], 2
dec ebx
jne 0x52a243
jmp case.0x529fba.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x529fba.5
mov dword [ebp - 8], edi
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x529fba.5
inc ebx
mov eax, dword [ebp - 8]
mov dl, byte [eax + 2]
shl edx, 0x10
mov dx, word [eax]
push edx
lea eax, [ebp - 0x1c]
call fcn.00552630
mov eax, dword [ebp - 0x10]
mov dx, word [ebp - 0x1c]
mov word [eax], dx
mov dl, byte [ebp - 0x1a]
mov byte [eax + 2], dl
add dword [ebp - 8], 3
add dword [ebp - 0x10], 3
dec ebx
jne 0x52a2ab
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc