Function at 0x648f51
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 0x648f91
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 0x6490bb
xchg ecx, edx
lodsb al, byte [esi]
cmp al, 0xff
jne 0x648fd8
lodsb al, byte [esi]
and eax, 0xff
sub ecx, eax
js 0x648fbe
jne 0x648fad
lea edi, [edi + ecx*2]
neg ecx
sub edx, ecx
js 0x64920c
je 0x64920c
mov ecx, edx
jmp 0x6490bb
cmp al, 0xfe
jne 0x649073
lodsb al, byte [esi]
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x649069
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x648ffc
add eax, edx
xor edx, edx
push edx
mov ecx, eax
mov edx, dword [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
sub edi, 2
rol ax, 1
test eax, 0x821
jne 0x64903a
and eax, 0xf7de
mov word [edi + 2], ax
dec ecx
jne 0x648fff
jmp 0x64905e
test eax, 1
je 0x649046
or eax, 0xf000
test eax, 0x800
je 0x649052
or eax, 0x7c0
test eax, 0x20
je 0x64905c
or eax, 0x1e
jmp 0x64902c
pop ecx
test ecx, ecx
je 0x64920c
jmp 0x6490bb
jne 0x648fad
mov ecx, edx
jmp 0x6490bb
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x6490b1
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x64908e
add eax, edx
xor edx, edx
mov ecx, eax
mov eax, dword [0x7d2b94]
sub edi, 2
mov al, byte [esi]
inc esi
mov ax, word [ebp + eax*2]
mov word [edi + 2], ax
dec ecx
jne 0x649090
add ecx, edx
je 0x64920c
jmp 0x6490bb
jne 0x648fad
mov ecx, edx
jmp 0x6490bb
lodsb al, byte [esi]
cmp al, 0xff
jne 0x6490df
mov al, byte [esi]
inc esi
and eax, 0xff
neg eax
lea edi, [edi + eax*2]
add ecx, eax
jns 0x6490d8
neg ecx
lea edi, [edi + ecx*2]
xor ecx, ecx
jne 0x6490bb
jmp 0x64920c
cmp al, 0xfe
jne 0x64915b
lodsb al, byte [esi]
and eax, 0xff
sub ecx, eax
jns 0x6490f1
add eax, ecx
xor ecx, ecx
push ecx
mov ecx, eax
mov edx, dword [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
sub edi, 2
rol ax, 1
test eax, 0x821
jne 0x649137
and eax, 0xf7de
mov word [edi + 2], ax
dec ecx
jne 0x6490f4
pop ecx
test ecx, ecx
jne 0x6490bb
jmp 0x64920c
test eax, 1
je 0x649143
or eax, 0xf000
test eax, 0x800
je 0x64914f
or eax, 0x7c0
test eax, 0x20
je 0x649159
or eax, 0x1e
jmp 0x649121
mov edx, dword [0x7d2b94]
shl edx, 1
and eax, 0xff
sub ecx, eax
jns 0x649170
add eax, ecx
xor ecx, ecx
push ecx
mov ecx, eax
add ebp, edx
cmp ecx, 8
jge 0x649193
mov al, byte [esi]
inc esi
and eax, 0xff
sub edi, 2
mov ax, word [ebp + eax*2]
dec ecx
mov word [edi + 2], ax
jne 0x64917a
jmp 0x649201
sub edi, 2
test edi, 2
je 0x6491b3
mov al, byte [esi]
inc esi
and eax, 0xff
sub edi, 2
mov ax, word [ebp + eax*2]
dec ecx
mov word [edi + 4], ax
sub ecx, 2
mov al, byte [esi]
inc esi
and eax, 0xff
sub edi, 4
mov dx, word [ebp + eax*2]
mov al, byte [esi]
shl edx, 0x10
inc esi
mov dx, word [ebp + eax*2]
sub ecx, 2
mov dword [edi + 4], edx
jns 0x6491b6
add edi, 2
test ecx, 1
je 0x6491f9
mov al, byte [esi]
inc esi
and eax, 0xff
sub 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 0x6490bb
test dword [0x7d2b50], 0xffffffff
jns 0x649238
mov esi, dword [0x7d2b5c]
dec esi
jns 0x649225
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 0x649257
mov esi, dword [0x7d2b5c]
inc esi
cmp esi, dword [ebx - 4]
jne 0x649246
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 0x648f91
popal
ret