Function at 0x648416
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 0x648456
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 0x648580
xchg ecx, edx
lodsb al, byte [esi]
cmp al, 0xff
jne 0x64849d
lodsb al, byte [esi]
and eax, 0xff
sub ecx, eax
js 0x648483
jne 0x648472
neg ecx
lea edi, [edi + ecx*2]
sub edx, ecx
js 0x6486cb
je 0x6486cb
mov ecx, edx
jmp 0x648580
cmp al, 0xfe
jne 0x648538
lodsb al, byte [esi]
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x64852e
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x6484c1
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
add edi, 2
rol ax, 1
test eax, 0x821
jne 0x6484ff
and eax, 0xf7de
mov word [edi - 2], ax
dec ecx
jne 0x6484c4
jmp 0x648523
test eax, 1
je 0x64850b
or eax, 0xf000
test eax, 0x800
je 0x648517
or eax, 0x7c0
test eax, 0x20
je 0x648521
or eax, 0x1e
jmp 0x6484f1
pop ecx
test ecx, ecx
je 0x6486cb
jmp 0x648580
jne 0x648472
mov ecx, edx
jmp 0x648580
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x648576
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x648553
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 0x648555
add ecx, edx
je 0x6486cb
jmp 0x648580
jne 0x648472
mov ecx, edx
jmp 0x648580
lodsb al, byte [esi]
cmp al, 0xff
jne 0x6485a0
mov al, byte [esi]
inc esi
and eax, 0xff
lea edi, [edi + eax*2]
sub ecx, eax
jns 0x648599
lea edi, [edi + ecx*2]
xor ecx, ecx
jne 0x648580
jmp 0x6486cb
cmp al, 0xfe
jne 0x64861d
lodsb al, byte [esi]
and eax, 0xff
sub ecx, eax
jns 0x6485b2
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]
mov ax, word [ebp + eax*2]
shr edx, 1
and eax, 0xf7de
shr eax, 1
inc esi
add eax, edx
add edi, 2
rol ax, 1
test eax, 0x821
jne 0x6485f9
and eax, 0xf7de
mov word [edi - 2], ax
dec ecx
jne 0x6485b5
pop ecx
test ecx, ecx
jne 0x648580
jmp 0x6486cb
test eax, 1
je 0x648605
or eax, 0xf000
test eax, 0x800
je 0x648611
or eax, 0x7c0
test eax, 0x20
je 0x64861b
or eax, 0x1e
jmp 0x6485e3
mov edx, dword [0x7d2b94]
shl edx, 1
and eax, 0xff
sub ecx, eax
jns 0x648632
add eax, ecx
xor ecx, ecx
push ecx
mov ecx, eax
add ebp, edx
cmp ecx, 8
jge 0x648655
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 0x64863c
jmp 0x6486c0
test edi, 2
je 0x648672
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 0x648675
test ecx, 1
je 0x6486b8
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 0x648580
test dword [0x7d2b50], 0xffffffff
jns 0x6486f7
mov esi, dword [0x7d2b5c]
dec esi
jns 0x6486e4
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 0x648716
mov esi, dword [0x7d2b5c]
inc esi
cmp esi, dword [ebx - 4]
jne 0x648705
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 0x648456
popal
ret