Function at 0x5b9a00
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [ebp + 0x10]
mov ecx, dword [eax + 0x40]
mov ebx, dword [eax + 0xd108]
mov eax, dword [eax + 0xa8]
mov dword [ebp - 0x20], eax
lea edx, [esi + 8]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x2c], ecx
shl edx, 8
add edx, edi
mov dword [ebp - 4], ebx
mov eax, dword [edi + esi*4 + 0xb00]
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + esi*4 + 0xb18]
mov dword [ebp - 0xc], eax
lea eax, [esi + 2]
shl eax, 8
add eax, edi
mov dword [ebp - 8], edx
mov dword [ebp - 0x10], eax
lea eax, [esi + esi*2]
lea ecx, [edi + eax*8]
mov eax, dword [ecx + 0xb30]
movzx eax, word [eax]
mov word [ebp - 0x14], ax
mov eax, dword [ecx + 0xb34]
movzx eax, word [eax]
mov word [ebp - 0x12], ax
xor eax, eax
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0xc], eax
jle 0x5b9bd3
lea ecx, [esi + esi*2]
mov dword [ebp - 0x24], ecx
nop dword [eax + eax]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x3c], eax
lea eax, [ecx + eax*4]
mov ecx, dword [eax]
mov dword [ebp - 0x30], eax
mov eax, ecx
and eax, 0x700
cmp eax, 0x100
mov eax, 0
setne al
shr ecx, 2
and ecx, 0xf
mov dword [ebp - 0x34], eax
add ecx, dword [ebp - 0x24]
xor esi, esi
lea eax, [eax + ecx*2]
mov eax, dword [edi + eax*4 + 0xb30]
mov dword [ebp - 0x28], eax
cmp dword [edx + esi*4], 0
mov dword [ebp - 0x38], esi
jne 0x5b9b94
mov eax, dword [ebp - 0x10]
mov edx, dword [eax + esi*4]
movzx edi, byte [edx + ebx]
inc edx
mov ebx, dword [edi*4 + 0x7210b0]
cmp edi, 0xf
jae 0x5b9b15
cmp edi, 0xc
sbb ecx, ecx
and ecx, 0x15
cmp edi, 2
sbb eax, eax
and eax, 0xfffffff3
add ecx, eax
mov eax, dword [ebp - 4]
movzx eax, byte [edx + eax]
shl eax, cl
add ebx, eax
inc edx
mov eax, ebx
sar eax, 8
and eax, 0xfff
test edi, edi
jne 0x5b9b3c
mov ecx, dword [ebp - 4]
movzx ecx, byte [edx + ecx]
inc edx
shl ecx, 8
add eax, ecx
mov ecx, eax
test ecx, ecx
mov ecx, 0x7fffffff
cmove eax, ecx
mov ecx, dword [ebp - 8]
mov edi, dword [ebp + 0xc]
mov dword [ecx + esi*4], eax
mov ecx, dword [ebp - 0x10]
mov dword [ecx + esi*4], edx
mov edx, ebx
and edx, 0x100000
movzx ecx, bl
add esi, ecx
sar ebx, 0x15
mov ecx, dword [ebp - 0x28]
neg edx
sar edx, 0x15
xor edx, ebx
mov ebx, dword [ebp - 4]
movsx edx, dx
movsx ecx, word [ecx + esi*2]
imul edx, ecx
mov ecx, dword [ebp - 0x2c]
movzx ecx, byte [esi + ecx]
mov word [edi + ecx*2], dx
xor ecx, ecx
mov edx, dword [ebp - 8]
test eax, eax
sete cl
add esi, ecx
cmp esi, 0x40
jl 0x5b9ad3
jmp 0x5b9b97
dec dword [edx + esi*4]
mov eax, dword [ebp - 0x30]
mov esi, dword [ebp - 0x34]
mov ax, word [eax + 2]
mov word [edi], ax
movzx eax, word [ebp + esi*2 - 0x14]
mov esi, dword [ebp + 0x10]
push eax
push dword [ebp - 0x38]
push edi
push esi
push dword [ebp - 0x3c]
push dword [ebp + 8]
call fcn.005b71d0
mov eax, dword [ebp - 0x18]
add esp, 0x18
mov edx, dword [ebp - 8]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 0xc]
jl 0x5b9a90
mov eax, dword [ebp - 0xc]
mov ecx, dword [edi + esi*4 + 0xb24]
shl eax, 2
add dword [edi + esi*4 + 0xb00], eax
test ecx, ecx
jle 0x5b9c25
mov eax, ecx
neg eax
shl eax, 2
add dword [edi + esi*4 + 0xb0c], eax
mov eax, dword [ebp + 8]
push dword [eax + 0xac]
push ecx
push dword [edi + esi*4 + 0xb0c]
push dword [eax + esi*4 + 0x240]
push dword [eax + 0x228]
push dword [eax + 0x22c]
call fcn.005bc470
add esp, 0x18
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret