Function at 0x65e700
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword [0x98cddc]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x65ea3a
sub esp, 0x38
movzx eax, byte [esp + 0x3c]
test al, al
je 0x65ea21
cmp al, 8
ja 0x65ea21
mov edx, dword [esp + 0x44]
test edx, edx
je 0x65e831
mov ebx, dword [esp + 0x40]
movzx ebp, byte [ebx]
cmp al, 8
jae 0x65e75b
movzx ecx, al
mov esi, 1
shl esi, cl
cmp ecx, 0x20
sbb edi, edi
and esi, edi
add esi, 0xffffffff
and ebp, esi
movzx ecx, al
mov eax, 1
shl eax, cl
lea esi, [ecx - 0x20]
mov edi, ecx
mov ecx, esi
mov edx, 1
shl edx, cl
neg ecx
mov ebx, 1
shr ebx, cl
cmp edi, 0x20
sbb edi, edi
and eax, edi
cmp esi, 0x20
sbb esi, esi
and edx, esi
cmp ecx, 0x20
sbb esi, esi
and esi, ebx
or edx, esi
add eax, 0xffffffff
adc edx, 0xffffffff
test edx, edx
sete dl
seta bl
cmp eax, ebp
seta al
and edx, eax
or edx, ebx
test dl, dl
jne 0x65e7eb
mov eax, dword [esp + 0x48]
lea edx, [eax - 1]
mov ebx, edx
neg edx
sar edx, 0x1f
and edx, 1
mov esi, dword [esp + 0x40]
add edx, esi
mov edi, dword [esp + 0x44]
lea ecx, [edi - 1]
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
jmp 0x65e89f
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x50], 0
mov eax, dword [esp + 0x48]
dec eax
mov ecx, eax
neg eax
sar eax, 0x1f
and eax, 1
mov edx, dword [esp + 0x40]
add eax, edx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x44]
dec eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
add esp, 0x38
ret
mov eax, dword [0x960500]
mov ecx, dword [0x960504]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
add esp, 0x38
ret
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x30], edx
mov ebp, eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
test ecx, ecx
je 0x65e9ed
movzx eax, byte [edx]
mov byte [esp + 0xf], al
dec ebx
mov dword [esp + 0x2c], ebx
neg ebx
sar ebx, 0x1f
and ebx, 1
and eax, 0x7f
mov dword [esp + 0x28], eax
add edx, ebx
mov dword [esp + 0x34], edx
lea ebx, [ecx - 1]
mov dword [esp + 0x24], ebx
mov edi, dword [esp + 0x14]
cmp edi, 1
sbb ecx, ecx
xor ecx, 0xffffffff
mov esi, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x20], ecx
shl eax, cl
lea edx, [ecx - 0x20]
mov ecx, edx
mov ebx, dword [esp + 0x28]
shl ebx, cl
neg ecx
mov edi, dword [esp + 0x28]
shr edi, cl
cmp ecx, 0x20
sbb ecx, ecx
and edi, ecx
mov ecx, esi
mov esi, dword [esp + 0x20]
cmp esi, 0x20
sbb esi, esi
and eax, esi
mov esi, eax
add eax, ebp
cmp edx, 0x20
sbb edx, edx
and edx, ebx
or edx, edi
add esi, ebp
mov ebx, dword [esp + 0x30]
adc edx, ebx
movzx ebx, byte [esp + 0xf]
test bl, 0x80
je 0x65e9b9
add ecx, 7
mov ebx, dword [esp + 0x14]
adc ebx, 0
test ebx, ebx
xchg ebp, ebx
seta bl
xchg ebp, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
cmp ecx, 0x3f
xchg edi, ebx
setae bl
xchg edi, ebx
and edi, esi
or edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
je 0x65e86d
lea eax, [0x6f6dc0]
mov dword [esp], eax
lea eax, [0x960508]
mov dword [esp + 4], eax
call fcn.00409df0
mov eax, dword [esp + 8]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x5c], ecx
lea ecx, [0x7a4820]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], eax
add esp, 0x38
ret
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
add esp, 0x38
ret
mov ecx, dword [0x960500]
mov edx, dword [0x960504]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], edx
add esp, 0x38
ret
lea eax, [0x6e0660]
mov dword [esp], eax
lea eax, [0x7a3f20]
mov dword [esp + 4], eax
call fcn.0046ae10
nop
call fcn.004706b0
jmp fcn.0065e700