Function at 0x6471b0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
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 0x6471f6
cmp dword [edi + 0x61c], 0
je 0x6471f0
mov esi, dword [edi + 0x614]
test esi, esi
je 0x6471e8
mov eax, esi
call fcn.006998f4
test al, al
jne 0x6471f0
mov esi, dword [edi + 0x61c]
jmp 0x6471f6
mov esi, dword [edi + 0x614]
cmp byte [0x770e9c], 0
je 0x64725a
test edi, edi
je 0x64725a
test esi, esi
je 0x64725a
mov eax, esi
call fcn.006998f4
test al, al
je 0x64725a
cmp byte [esi + 0x1c], 0
jne 0x64725a
mov eax, edi
call fcn.0063f0b4
call fcn.006998f4
test al, al
je 0x64725a
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.0063f0b4
mov edx, eax
xor ecx, ecx
mov cl, bl
mov eax, esi
call fcn.00699a54
test al, al
jne case.0x647267.5
xor eax, eax
mov al, bl
cmp eax, 8
ja case.0x647267.5
jmp dword [eax*4 + 0x64726e]
mov al, byte [ebp + 0x10]
dec al
jne case.0x647267.5
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
call fcn.006a9490
jmp case.0x647267.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x647267.5
mov eax, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
movzx edx, word [eax]
shr edx, 8
mov byte [ebx + 2], dl
movzx edx, word [eax + 2]
shr edx, 8
mov byte [ebx + 1], dl
movzx edx, word [eax + 4]
shr edx, 8
mov byte [ebx], dl
add ebx, 3
add eax, 6
dec esi
jne 0x6472ce
jmp case.0x647267.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x647267.5
mov eax, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
mov dl, byte [eax]
and dl, 0xff
mov byte [ebx + 2], dl
mov dl, byte [eax + 2]
and dl, 0xff
mov byte [ebx + 1], dl
mov dl, byte [eax + 4]
and dl, 0xff
mov byte [ebx], dl
add ebx, 3
add eax, 6
dec esi
jne 0x647316
jmp case.0x647267.5
mov al, byte [ebp + 0x10]
dec al
je 0x64742a
dec al
je 0x647359
sub al, 2
je 0x64738b
dec al
je 0x6473cb
jmp case.0x647267.5
mov ebx, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
mov al, byte [ebx + 2]
shl eax, 0x10
mov ax, word [ebx]
push eax
call fcn.0064706c
mov dword [edi], eax
add ebx, 3
add edi, 4
dec esi
jne 0x64736c
jmp case.0x647267.5
mov ebx, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
mov al, byte [ebx + 2]
shl eax, 0x10
mov ax, word [ebx]
push eax
lea eax, [ebp - 0x10]
call fcn.00685770
mov ax, word [ebp - 0x10]
mov word [edi], ax
mov al, byte [ebp - 0xe]
mov byte [edi + 2], al
add ebx, 3
add edi, 3
dec esi
jne 0x64739e
jmp case.0x647267.5
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
mov ecx, ebx
xor eax, eax
mov al, byte [ecx + 2]
mov edx, dword [0x767c3c]
imul dword [edx]
xor edx, edx
mov dl, byte [ecx + 1]
mov edi, dword [0x767b04]
imul edx, dword [edi]
add eax, edx
xor edx, edx
mov dl, byte [ecx]
mov ecx, dword [0x767564]
imul edx, dword [ecx]
add eax, edx
mov ecx, 0x64
cdq
idiv ecx
mov edx, dword [ebp - 0xc]
mov byte [edx], al
add ebx, 3
inc dword [ebp - 0xc]
dec esi
jne 0x6473e1
jmp case.0x647267.5
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx + ecx*2]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
call fcn.00408128
jmp case.0x647267.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x647267.5
push 0
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00646dec
jmp case.0x647267.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x647267.5
mov edi, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
mov eax, edi
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 - 0x10]
mov eax, dword [edi]
call fcn.00646cc0
mov ax, word [ebp - 0x10]
mov word [ebx], ax
mov al, byte [ebp - 0xe]
mov byte [ebx + 2], al
add ebx, 3
add edi, 4
add edi, 2
dec esi
jne 0x647482
jmp case.0x647267.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x647267.5
mov edi, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
mov al, byte [edi + 2]
shl eax, 0x10
mov ax, word [edi]
push eax
lea eax, [ebp - 0x10]
call fcn.00685b28
mov ax, word [ebp - 0x10]
mov word [ebx], ax
mov al, byte [ebp - 0xe]
mov byte [ebx + 2], al
add edi, 3
add ebx, 3
dec esi
jne 0x6474dd
jmp case.0x647267.5
mov al, byte [ebp + 0x10]
dec al
jne case.0x647267.5
mov edi, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp + 0xc]
dec esi
test esi, esi
jl case.0x647267.5
inc esi
xor eax, eax
mov al, byte [edi + 2]
push eax
xor ecx, ecx
mov cl, byte [edi + 1]
xor edx, edx
mov dl, byte [edi]
mov eax, ebx
call fcn.0069b744
add edi, 3
add ebx, 3
dec esi
jne 0x64751d
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc