Function at 0x648105
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 0x64816e
mov eax, dword [0x7d2b5c]
sub dword [0x7d2b84], eax
mov edx, dword [0x7d2b84]
test edx, edx
jns 0x648158
shl edx, 6
and edx, 0xffffff00
add edx, dword [0x7d2b94]
jns 0x648152
xor edx, edx
mov dword [0x7d2b94], edx
xor edx, edx
idiv dword [ebx - 4]
mov dword [0x7d2b5c], edx
lea edx, [ebx + edx*4]
mov esi, dword [edx]
add esi, dword [0x7d2b70]
dec dword [0x7d2b84]
jns 0x64818e
test dword [0x7d2b94], 0xffffffff
je 0x64818e
test dword [0x7d2b84], 3
jne 0x64818e
mov ecx, dword [0x7d2b7c]
and ecx, 0xffff
mov edx, dword [0x7d2bac]
test edx, edx
je 0x64828d
xchg ecx, edx
lodsb al, byte [esi]
cmp al, 0xff
jne 0x6481d6
lodsb al, byte [esi]
and eax, 0xff
sub ecx, eax
js 0x6481bb
jne 0x6481aa
neg ecx
lea edi, [edi + ecx*2]
sub edx, ecx
je 0x6483b3
jns 0x64828b
lea edi, [edi + edx*2]
jmp 0x6483b3
cmp al, 0xfe
je 0x6481e8
test dword [0x7d2b84], 0xffffffff
jns 0x648247
js 0x6481e9
lodsb al, byte [esi]
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x64823d
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x648204
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 0x648207
pop ecx
test ecx, ecx
je 0x6483b3
jmp 0x64828d
jne 0x6481aa
mov ecx, edx
jmp 0x64828d
and eax, 0xff
lea esi, [eax + esi]
sub ecx, eax
jns 0x648285
lea esi, [ecx + esi]
neg ecx
mov eax, ecx
sub edx, eax
jns 0x648262
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 0x648264
add ecx, edx
je 0x6483b3
jmp 0x64828d
jne 0x6481aa
mov ecx, edx
lodsb al, byte [esi]
cmp al, 0xff
jne 0x6482ad
mov al, byte [esi]
inc esi
and eax, 0xff
lea edi, [edi + eax*2]
sub ecx, eax
jns 0x6482a6
lea edi, [edi + ecx*2]
xor ecx, ecx
jne 0x64828d
jmp 0x6483b3
cmp al, 0xfe
je 0x6482bf
test dword [0x7d2b84], 0xffffffff
jns 0x648305
js 0x6482c0
lodsb al, byte [esi]
and eax, 0xff
sub ecx, eax
jns 0x6482cd
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
mov word [edi - 2], ax
dec ecx
jne 0x6482d0
pop ecx
test ecx, ecx
jne 0x64828d
jmp 0x6483b3
mov edx, dword [0x7d2b94]
shl edx, 1
and eax, 0xff
sub ecx, eax
jns 0x64831a
add eax, ecx
xor ecx, ecx
push ecx
mov ecx, eax
add ebp, edx
cmp ecx, 8
jge 0x64833d
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 0x648324
jmp 0x6483a8
test edi, 2
je 0x64835a
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 0x64835d
test ecx, 1
je 0x6483a0
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 0x64828d
test dword [0x7d2b50], 0xffffffff
jns 0x6483df
mov esi, dword [0x7d2b5c]
dec esi
jns 0x6483cc
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 0x6483fe
mov esi, dword [0x7d2b5c]
inc esi
cmp esi, dword [ebx - 4]
jne 0x6483ed
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 0x64816e
popal
ret