Function at 0x7b5e80
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x30
push esi
push edi
mov edi, dword [esp + 0x40]
test edi, edi
jne 0x7b5f45
mov edi, 0xb
mov dword [esp + 0x40], edi
mov esi, dword [esp + 0x48]
mov ecx, 0x1f
bsr eax, esi
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
lea ecx, [eax + 1]
mov eax, dword [esp + 0x4c]
bsr eax, eax
add eax, 2
cmp ecx, eax
cmovb eax, ecx
cmp edi, eax
jb 0x7b60be
xor eax, eax
cmp dword [esp + 0x50], eax
push ebx
push ebp
sete al
push 0
push esi
push 0x40000000
lea eax, [eax*2 - 1]
movzx eax, ax
push 0
mov dword [esp + 0x30], eax
call fcn.007bcb10
xor ecx, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], edx
mov eax, 0x2a
sub eax, edi
xor edx, edx
bts ecx, eax
mov ebp, 1
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x34], ecx
cmovae edx, ecx
mov ecx, edi
mov dword [esp + 0x30], edx
xor eax, eax
mov edx, esi
shl ebp, cl
shr edx, cl
xor ebx, ebx
mov ecx, 0x3e
mov dword [esp + 0x14], eax
xor esi, esi
mov dword [esp + 0x24], edx
sub ecx, edi
mov dword [esp + 0x18], ecx
jmp 0x7b5f66
cmp edi, 5
jb 0x7b60be
cmp edi, 0xc
jbe 0x7b5e9a
pop edi
mov eax, 0xffffffd4
pop esi
add esp, 0x30
ret
mov edx, dword [esp + 0x24]
movzx ecx, ax
movzx eax, ax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x3c], ebx
mov ecx, dword [eax + esi*4]
cmp ecx, dword [esp + 0x50]
je 0x7b60b4
test ecx, ecx
jne 0x7b5f94
xor edi, edi
jmp 0x7b6046
cmp ecx, edx
ja 0x7b5fa5
mov ecx, dword [esp + 0x20]
dec ebp
movzx edi, cx
jmp 0x7b6046
mov eax, dword [esp + 0x28]
mul ecx
mov ebx, eax
mov eax, dword [esp + 0x2c]
mul ecx
mov ecx, dword [esp + 0x18]
add ebx, edx
mov dword [esp + 0x14], eax
mov edx, ebx
mov dword [esp + 0x10], ebx
call fcn.007bcf90
movzx ebx, ax
cmp bx, 8
jge 0x7b6018
mov ecx, dword [esp + 0x18]
movsx edi, bx
mov eax, edi
cdq
call fcn.007bcf70
sub dword [esp + 0x14], eax
mov ecx, dword [edi*4 + 0x942b94]
sbb dword [esp + 0x10], edx
mov eax, dword [esp + 0x30]
mul ecx
mov edi, eax
mov eax, dword [esp + 0x34]
mul ecx
add edi, edx
cmp dword [esp + 0x10], edi
jb 0x7b6014
ja 0x7b600d
cmp dword [esp + 0x14], eax
jbe 0x7b6014
mov eax, 1
jmp 0x7b6016
xor eax, eax
add ebx, eax
movzx edx, bx
movsx eax, bx
mov ecx, edx
sub ebp, eax
mov ebx, esi
cmp dx, word [esp + 0x38]
mov edi, edx
mov eax, dword [esp + 0x1c]
cmovle ebx, dword [esp + 0x3c]
cmp dx, word [esp + 0x1c]
movzx eax, ax
cmovle ecx, eax
movzx eax, cx
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x44]
mov ecx, esi
mov eax, edx
inc esi
mov word [eax + ecx*2], di
mov eax, dword [esp + 0x14]
cmp esi, dword [esp + 0x54]
jbe 0x7b5f62
movzx edi, word [edx + ebx*2]
lea esi, [edx + ebx*2]
movsx ecx, di
mov eax, ebp
sar ecx, 1
neg eax
cmp eax, ecx
jl 0x7b60a0
push dword [esp + 0x20]
mov esi, dword [esp + 0x4c]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push esi
push edx
call fcn.007b60d0
add esp, 0x18
cmp eax, 0xffffff88
jbe 0x7b60aa
pop ebp
pop ebx
pop edi
pop esi
add esp, 0x30
ret
lea ecx, [edi + ebp]
mov word [esi], cx
mov esi, dword [esp + 0x48]
pop ebp
pop ebx
pop edi
mov eax, esi
pop esi
add esp, 0x30
ret
pop ebp
pop ebx
pop edi
xor eax, eax
pop esi
add esp, 0x30
ret
pop edi
or eax, 0xffffffff
pop esi
add esp, 0x30
ret