Function at 0x647c10
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
pushal
mov esi, dword [0x7d2b70]
mov edi, dword [0x7d2b78]
mov ebp, dword [0x7d2ba8]
mov ebx, dword [0x7d2b4c]
test dword [0x7d2b5c], 0xffffffff
je 0x647c50
xor edx, edx
mov eax, dword [0x7d2b5c]
idiv dword [ebx - 4]
mov dword [0x7d2b5c], edx
lea edx, [ebx + edx*4]
mov esi, dword [edx]
add esi, dword [0x7d2b70]
mov ecx, dword [0x7d2b7c]
and ecx, 0xffff
mov edx, dword [0x7d2bac]
test edx, edx
je 0x647d41
xchg ecx, edx
lodsb al, byte [esi]
cmp al, 0xff
jne 0x647c98
lodsb al, byte [esi]
and eax, 0xff
sub ecx, eax
js 0x647c7d
jne 0x647c6c
neg ecx
lea edi, [edi + ecx*2]
sub edx, ecx
je 0x647e5b
jns 0x647d3f
lea edi, [edi + edx*2]
jmp 0x647e5b
cmp al, 0xfe
jne 0x647cfb
lodsb al, byte [esi]
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x647cf1
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x647cb8
add eax, edx
xor edx, edx
push edx
mov ecx, eax
mov dx, word [edi]
mov eax, dword [0x7d2b94]
and edx, 0xf7de
mov al, byte [esi]
mov ax, word [ebp + eax*2]
shr edx, 1
and eax, 0xf7de
shr eax, 1
inc esi
add eax, edx
add edi, 2
mov word [edi - 2], ax
dec ecx
jne 0x647cbb
pop ecx
test ecx, ecx
je 0x647e5b
jmp 0x647d41
jne 0x647c6c
mov ecx, edx
jmp 0x647d41
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x647d39
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x647d16
add eax, edx
xor edx, edx
mov ecx, eax
mov eax, dword [0x7d2b94]
add edi, 2
mov al, byte [esi]
inc esi
mov ax, word [ebp + eax*2]
mov word [edi - 2], ax
dec ecx
jne 0x647d18
add ecx, edx
je 0x647e5b
jmp 0x647d41
jne 0x647c6c
mov ecx, edx
lodsb al, byte [esi]
cmp al, 0xff
jne 0x647d61
mov al, byte [esi]
inc esi
and eax, 0xff
lea edi, [edi + eax*2]
sub ecx, eax
jns 0x647d5a
lea edi, [edi + ecx*2]
xor ecx, ecx
jne 0x647d41
jmp 0x647e5b
cmp al, 0xfe
jne 0x647dad
mov al, byte [esi]
inc esi
and eax, 0xff
sub ecx, eax
jns 0x647d75
add eax, ecx
xor ecx, ecx
push ecx
mov ecx, eax
mov dx, word [edi]
mov eax, dword [0x7d2b94]
and edx, 0xf7de
mov al, byte [esi]
shr edx, 1
inc esi
mov ax, word [ebp + eax*2]
add edi, 2
and eax, 0xf7de
shr eax, 1
add eax, edx
mov word [edi - 2], ax
dec ecx
jne 0x647d78
pop ecx
test ecx, ecx
jne 0x647d41
jmp 0x647e5b
mov edx, dword [0x7d2b94]
shl edx, 1
and eax, 0xff
sub ecx, eax
jns 0x647dc2
add eax, ecx
xor ecx, ecx
push ecx
mov ecx, eax
add ebp, edx
cmp ecx, 8
jge 0x647de5
mov al, byte [esi]
inc esi
and eax, 0xff
add edi, 2
mov ax, word [ebp + eax*2]
dec ecx
mov word [edi - 2], ax
jne 0x647dcc
jmp 0x647e50
test edi, 2
je 0x647e02
mov al, byte [esi]
inc esi
and eax, 0xff
add edi, 2
mov ax, word [ebp + eax*2]
dec ecx
mov word [edi - 2], ax
sub ecx, 2
mov al, byte [esi]
inc esi
and eax, 0xff
add edi, 4
mov dx, word [ebp + eax*2]
mov al, byte [esi]
shl edx, 0x10
inc esi
mov dx, word [ebp + eax*2]
ror edx, 0x10
sub ecx, 2
mov dword [edi - 4], edx
jns 0x647e05
test ecx, 1
je 0x647e48
mov al, byte [esi]
inc esi
and eax, 0xff
add edi, 2
mov ax, word [ebp + eax*2]
dec ecx
mov word [edi - 2], ax
mov edx, dword [0x7d2b94]
shl edx, 1
pop ecx
sub ebp, edx
test ecx, ecx
jne 0x647d41
test dword [0x7d2b50], 0xffffffff
jns 0x647e87
mov esi, dword [0x7d2b5c]
dec esi
jns 0x647e74
mov esi, dword [ebx - 4]
dec esi
mov dword [0x7d2b5c], esi
lea esi, [ebx + esi*4]
mov esi, dword [esi]
add esi, dword [0x7d2b70]
jmp 0x647ea6
mov esi, dword [0x7d2b5c]
inc esi
cmp esi, dword [ebx - 4]
jne 0x647e95
xor esi, esi
mov dword [0x7d2b5c], esi
lea esi, [ebx + esi*4]
mov esi, dword [esi]
add esi, dword [0x7d2b70]
add edi, dword [0x7d2b98]
sub dword [0x7d2b7c], 0x10000
jns 0x647c50
popal
ret