Function at 0x5ffb94
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov ebx, edx
mov dword [ebp - 4], eax
mov edi, dword [ebp + 8]
xor esi, esi
test edi, edi
je 0x5ffbda
cmp dword [edi + 0x5b0], 0
je 0x5ffbd4
mov esi, dword [edi + 0x5a8]
test esi, esi
je 0x5ffbcc
mov eax, esi
call fcn.00630068
test al, al
jne 0x5ffbd4
mov esi, dword [edi + 0x5b0]
jmp 0x5ffbda
mov esi, dword [edi + 0x5a8]
cmp byte [0x6a4f08], 0
je 0x5ffc3e
test edi, edi
je 0x5ffc3e
test esi, esi
je 0x5ffc3e
mov eax, esi
call fcn.00630068
test al, al
je 0x5ffc3e
cmp byte [esi + 0x1c], 0
jne 0x5ffc3e
mov eax, edi
call fcn.005f8658
call fcn.00630068
test al, al
je 0x5ffc3e
xor eax, eax
mov al, byte [ebp + 0x10]
push eax
push 0
push 0
mov eax, dword [ebp - 4]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov eax, edi
call fcn.005f8658
mov edx, eax
xor ecx, ecx
mov cl, bl
mov eax, esi
call fcn.0063018c
test al, al
jne case.0x5ffc4b.5
xor eax, eax
mov al, bl
cmp eax, 8
ja case.0x5ffc4b.5
jmp dword [eax*4 + 0x5ffc52]
mov al, byte [ebp + 0x10]
dec al
jne case.0x5ffc4b.5
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
call fcn.0060ad74
jmp case.0x5ffc4b.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax]
shr eax, 8
mov edx, dword [ebp - 0x14]
mov byte [edx + 2], al
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax + 2]
shr eax, 8
mov edx, dword [ebp - 0x14]
mov byte [edx + 1], al
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax + 4]
shr eax, 8
mov edx, dword [ebp - 0x14]
mov byte [edx], al
add dword [ebp - 0x14], 3
add dword [ebp - 0x1c], 6
dec ebx
jne 0x5ffcb8
jmp case.0x5ffc4b.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov eax, dword [ebp - 0x1c]
mov al, byte [eax]
and al, 0xff
mov edx, dword [ebp - 0x14]
mov byte [edx + 2], al
mov eax, dword [ebp - 0x1c]
mov al, byte [eax + 2]
and al, 0xff
mov edx, dword [ebp - 0x14]
mov byte [edx + 1], al
mov eax, dword [ebp - 0x1c]
mov al, byte [eax + 4]
and al, 0xff
mov edx, dword [ebp - 0x14]
mov byte [edx], al
add dword [ebp - 0x14], 3
add dword [ebp - 0x1c], 6
dec ebx
jne 0x5ffd1a
jmp case.0x5ffc4b.5
mov al, byte [ebp + 0x10]
dec al
je 0x5ffe64
dec al
je 0x5ffd72
sub al, 2
je 0x5ffdb2
dec al
je 0x5ffe00
jmp case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x10], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov eax, dword [ebp - 0x14]
mov dl, byte [eax + 2]
shl edx, 0x10
mov dx, word [eax]
push edx
call fcn.005ffa58
mov edx, dword [ebp - 0x10]
mov dword [edx], eax
add dword [ebp - 0x14], 3
add dword [ebp - 0x10], 4
dec ebx
jne 0x5ffd8b
jmp case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov eax, dword [ebp - 0x14]
mov dl, byte [eax + 2]
shl edx, 0x10
mov dx, word [eax]
push edx
lea eax, [ebp - 0x24]
call fcn.0061fd84
mov eax, dword [ebp - 0xc]
mov dx, word [ebp - 0x24]
mov word [eax], dx
mov dl, byte [ebp - 0x22]
mov byte [eax + 2], dl
add dword [ebp - 0x14], 3
add dword [ebp - 0xc], 3
dec ebx
jne 0x5ffdcb
jmp case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov ecx, dword [ebp - 0x14]
xor eax, eax
mov al, byte [ecx + 2]
mov edx, dword [0x699028]
imul dword [edx]
xor edx, edx
mov dl, byte [ecx + 1]
mov esi, dword [0x698f38]
imul edx, dword [esi]
add eax, edx
xor edx, edx
mov dl, byte [ecx]
mov ecx, dword [0x698b2c]
imul edx, dword [ecx]
add eax, edx
mov ecx, 0x64
cdq
idiv ecx
mov edx, dword [ebp - 0x18]
mov byte [edx], al
add dword [ebp - 0x14], 3
inc dword [ebp - 0x18]
dec ebx
jne 0x5ffe19
jmp case.0x5ffc4b.5
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx + ecx*2]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
call fcn.0040847c
jmp case.0x5ffc4b.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
call fcn.005ff92c
mov eax, dword [ebp - 0x14]
mov dx, word [ebp - 0x24]
mov word [eax], dx
mov dl, byte [ebp - 0x22]
mov byte [eax + 2], dl
add dword [ebp - 0x14], 3
add dword [ebp - 0x10], 4
dec ebx
jne 0x5ffe9e
jmp case.0x5ffc4b.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov eax, dword [ebp - 0x10]
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 - 0x24]
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
call fcn.005ff92c
mov eax, dword [ebp - 0x14]
mov dx, word [ebp - 0x24]
mov word [eax], dx
mov dl, byte [ebp - 0x22]
mov byte [eax + 2], dl
add dword [ebp - 0x14], 3
add dword [ebp - 0x10], 4
add dword [ebp - 0x10], 2
dec ebx
jne 0x5ffeef
jmp case.0x5ffc4b.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov eax, dword [ebp - 0xc]
mov dl, byte [eax + 2]
shl edx, 0x10
mov dx, word [eax]
push edx
lea eax, [ebp - 0x24]
call fcn.0062015c
mov eax, dword [ebp - 0x14]
mov dx, word [ebp - 0x24]
mov word [eax], dx
mov dl, byte [ebp - 0x22]
mov byte [eax + 2], dl
add dword [ebp - 0xc], 3
add dword [ebp - 0x14], 3
dec ebx
jne 0x5fff61
jmp case.0x5ffc4b.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x5ffc4b.5
mov eax, dword [ebp - 4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp + 0xc]
dec ebx
test ebx, ebx
jl case.0x5ffc4b.5
inc ebx
mov eax, dword [ebp - 0x20]
movzx eax, byte [eax + 2]
push eax
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov cl, byte [eax + 1]
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [eax]
mov eax, dword [ebp - 0x14]
call fcn.00631818
add dword [ebp - 0x20], 3
add dword [ebp - 0x14], 3
dec ebx
jne 0x5fffaf
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc