Function at 0x553ee0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 8
push ebx
push ebp
mov ebp, dword [esp + 0x14]
push esi
mov esi, dword [edi + 4]
mov eax, esi
cdq
mov ecx, esi
and ecx, 7
and edx, 7
mov ebx, 0x80
add eax, edx
sar ebx, cl
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
sar eax, 3
mov al, byte [eax + edx]
test al, bl
jne 0x553f1e
mov eax, dword [esp + 0x2c]
pop esi
pop ebp
pop ebx
add esp, 8
ret 0x28
mov ecx, dword [ebp + 0x28]
test ecx, ecx
je 0x553f31
mov eax, dword [ebp + 0x2c]
sub eax, ecx
sar eax, 3
cmp esi, eax
jb 0x553f36
call fcn.005b8b18
mov ecx, dword [ebp + 0x28]
test dword [ecx + esi*8], 0x1c0000
je 0x553f11
test ecx, ecx
jne 0x553f4a
xor eax, eax
jmp 0x553f52
mov eax, dword [ebp + 0x2c]
sub eax, ecx
sar eax, 3
mov edx, dword [edi + 4]
add edx, 1
cmp edx, eax
jne 0x553f65
mov eax, dword [ebp + 0x58]
mov dword [esp + 0xc], eax
jmp 0x553f6c
mov ecx, dword [ebp + 0x54]
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0xc]
push edx
push ebx
mov ecx, edi
lea eax, [esp + 0x3c]
call fcn.00553c40
mov cl, byte [eax]
mov edx, dword [esp + 0x44]
add esp, 8
mov byte [esp + 0x1c], cl
mov al, byte [eax + 1]
and edx, 4
mov byte [esp + 0x18], al
mov dword [esp + 0x10], edx
je 0x553fa6
test cl, cl
je 0x553f11
cmp dword [esp + 0x30], 0
jle 0x554023
test al, al
jne 0x554023
mov esi, dword [esp + 0x28]
mov ecx, dword [esi + 4]
test ecx, ecx
jne 0x553fc0
xor eax, eax
jmp 0x553fc8
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jge 0x554018
xor ebp, ebp
test ebx, ebx
jle 0x554018
jmp 0x553fe0
mov eax, dword [edi + 8]
test dword [eax + ebp*8 + 4], 0xc000
jne 0x55400b
mov edx, dword [edi + 4]
movzx ecx, bp
shl ecx, 0x13
and edx, 0x7ffff
or ecx, edx
lea ebx, [esp + 0x3c]
mov dword [esp + 0x3c], ecx
call fcn.005551e0
add ebp, 1
cmp ebp, dword [esp + 0xc]
jl 0x553fe0
mov ecx, dword [esp + 0x2c]
mov eax, ecx
pop esi
pop ebp
pop ebx
add esp, 8
ret 0x28
xor ebp, ebp
test ebx, ebx
jle 0x554120
mov eax, dword [edi + 8]
test dword [eax + ebp*8 + 4], 0xc000
jne 0x55410f
mov eax, dword [edi]
test eax, eax
je 0x5540d8
mov ecx, dword [esp + 0x38]
cmp eax, ecx
je 0x5540d8
cmp byte [esp + 0x18], 0
jne 0x5540d8
test byte [esp + 0x3c], 0x20
je 0x5540d8
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jne 0x5540a1
mov esi, dword [esp + 0x24]
mov eax, esi
call fcn.004f1250
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jge 0x554018
mov edx, dword [edi + 4]
movzx ecx, bp
shl ecx, 0x13
and edx, 0x7ffff
or ecx, edx
lea ebx, [esp + 0x34]
mov dword [esp + 0x34], ecx
call fcn.005551e0
jmp 0x55410f
mov esi, dword [esp + 0x28]
mov eax, esi
call fcn.004f1250
mov ecx, dword [esp + 0x2c]
cmp eax, ecx
jge 0x554018
mov ecx, dword [edi + 4]
movzx eax, bp
shl eax, 0x13
and ecx, 0x7ffff
or eax, ecx
lea ebx, [esp + 0x34]
mov dword [esp + 0x34], eax
call fcn.005551e0
jmp 0x55410f
mov eax, dword [edi + 4]
mov esi, dword [esp + 0x20]
movzx edx, bp
shl edx, 0x13
and eax, 0x7ffff
or edx, eax
lea ebx, [esp + 0x34]
mov dword [esp + 0x34], edx
call fcn.005551e0
mov eax, dword [esp + 0x2c]
sub eax, 1
cmp dword [esp + 0x30], 0
mov dword [esp + 0x2c], eax
jg 0x55410f
test eax, eax
jle 0x55413e
add ebp, 1
cmp ebp, dword [esp + 0xc]
jl 0x55402d
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
test eax, eax
jg 0x554133
xor eax, eax
pop esi
pop ebp
pop ebx
add esp, 8
ret 0x28
test edx, edx
jne 0x55413e
mov edx, dword [esp + 0x24]
mov ecx, dword [edx + 4]
pop esi
pop ebp
pop ebx
add esp, 8
ret 0x28