Function at 0x5edf30
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
mov esi, eax
mov eax, dword [esp + 0x24]
lea ebx, [ecx + eax*2]
add ebx, eax
imul ebx, ebx, 0xb
add ebx, dword [esp + 0x1c]
push edi
mov dword [esp + 0x14], ebx
cmp eax, 0x10
jge 0x5ee0a5
mov ecx, dword [esi + 8]
movzx ebp, byte [ebx]
mov edi, dword [esi + 4]
test ecx, ecx
jns 0x5edf95
mov edx, dword [esi + 0xc]
lea eax, [edx + 4]
cmp eax, dword [esi + 0x10]
ja 0x5edf8c
mov eax, dword [edx]
add edx, 3
mov dword [esi + 0xc], edx
mov edx, dword [esi]
bswap eax
shr eax, 8
shl edx, 0x18
or eax, edx
add ecx, 0x18
mov dword [esi], eax
mov dword [esi + 8], ecx
jmp 0x5edf95
push esi
call fcn.006043a0
add esp, 4
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov eax, edi
imul eax, ebp
mov ebp, edx
shr ebp, cl
shr eax, 8
cmp ebp, eax
jbe 0x5edfc2
or ecx, 0xffffffff
sub ecx, eax
add edi, ecx
mov ecx, dword [esi + 8]
inc eax
shl eax, cl
sub edx, eax
mov dword [esi], edx
mov eax, 1
jmp 0x5edfc6
mov edi, eax
xor eax, eax
cmp edi, 0x7e
ja 0x5edfde
movzx edx, byte [edi + 0x69a710]
mov edi, dword [edi*4 + 0x69a790]
sub ecx, edx
mov dword [esi + 8], ecx
mov dword [esi + 4], edi
test eax, eax
je 0x5ee226
lea esp, [esp]
mov ecx, dword [esi + 8]
movzx ebx, byte [ebx + 1]
mov edi, dword [esi + 4]
test ecx, ecx
jns 0x5ee030
mov edx, dword [esi + 0xc]
lea eax, [edx + 4]
cmp eax, dword [esi + 0x10]
ja 0x5ee027
mov eax, dword [edx]
add edx, 3
mov dword [esi + 0xc], edx
mov edx, dword [esi]
bswap eax
shr eax, 8
shl edx, 0x18
or eax, edx
add ecx, 0x18
mov dword [esi], eax
mov dword [esi + 8], ecx
jmp 0x5ee030
push esi
call fcn.006043a0
add esp, 4
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov eax, edi
imul eax, ebx
mov ebx, edx
shr ebx, cl
shr eax, 8
cmp ebx, eax
jbe 0x5ee05a
or ebx, 0xffffffff
sub ebx, eax
inc eax
shl eax, cl
add edi, ebx
sub edx, eax
mov dword [esi], edx
mov eax, 1
jmp 0x5ee05e
mov edi, eax
xor eax, eax
cmp edi, 0x7e
ja 0x5ee076
movzx edx, byte [edi + 0x69a710]
mov edi, dword [edi*4 + 0x69a790]
sub ecx, edx
mov dword [esi + 8], ecx
mov dword [esi + 4], edi
test eax, eax
jne 0x5ee0b2
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx*4 + 0x6965bc]
inc ecx
mov ebx, eax
shl ebx, 5
add ebx, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
add ebx, eax
mov dword [esp + 0x14], ebx
cmp ecx, 0x10
jne 0x5edff0
pop edi
pop esi
pop ebp
mov eax, 0x10
pop ebx
add esp, 0xc
ret
mov eax, dword [esp + 0x28]
mov eax, dword [eax*4 + 0x6965bc]
mov ecx, dword [esp + 0x14]
movzx ebp, byte [ecx + 2]
mov ecx, dword [esi + 8]
mov ebx, eax
shl ebx, 5
add ebx, dword [esp + 0x20]
add ebx, eax
test ecx, ecx
jns 0x5ee109
mov edx, dword [esi + 0xc]
lea eax, [edx + 4]
cmp eax, dword [esi + 0x10]
ja 0x5ee100
mov eax, dword [edx]
add edx, 3
mov dword [esi + 0xc], edx
mov edx, dword [esi]
bswap eax
shr eax, 8
shl edx, 0x18
or eax, edx
add ecx, 0x18
mov dword [esi], eax
mov dword [esi + 8], ecx
jmp 0x5ee109
push esi
call fcn.006043a0
add esp, 4
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov eax, edi
imul eax, ebp
mov ebp, edx
shr ebp, cl
shr eax, 8
cmp ebp, eax
jbe 0x5ee12f
sub edi, eax
inc eax
shl eax, cl
dec edi
sub edx, eax
mov dword [esi], edx
mov eax, 1
jmp 0x5ee133
mov edi, eax
xor eax, eax
cmp edi, 0x7e
ja 0x5ee14b
movzx edx, byte [edi + 0x69a710]
mov edi, dword [edi*4 + 0x69a790]
sub ecx, edx
mov dword [esi + 8], ecx
mov dword [esi + 4], edi
test eax, eax
jne 0x5ee15a
lea ebp, [eax + 1]
add ebx, 0xb
jmp 0x5ee16c
mov eax, dword [esp + 0x14]
push eax
call fcn.005ed8d0
add esp, 4
mov ebp, eax
add ebx, 0x16
mov edx, dword [esi + 8]
mov dword [esp + 0x14], ebx
test edx, edx
jns 0x5ee1a9
mov ecx, dword [esi + 0xc]
lea eax, [ecx + 4]
cmp eax, dword [esi + 0x10]
ja 0x5ee1a0
mov eax, dword [ecx]
add ecx, 3
mov dword [esi + 0xc], ecx
mov ecx, dword [esi]
bswap eax
shr eax, 8
shl ecx, 0x18
or eax, ecx
add edx, 0x18
mov dword [esi], eax
mov dword [esi + 8], edx
jmp 0x5ee1a9
push esi
call fcn.006043a0
add esp, 4
mov edi, dword [esi]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 4]
mov eax, edi
shr eax, cl
shr edx, 1
mov dword [esp + 0x10], ecx
dec ecx
mov dword [esp + 0x18], eax
mov eax, edx
sub eax, dword [esp + 0x18]
mov dword [esi + 8], ecx
mov ecx, dword [esi + 4]
sar eax, 0x1f
add ecx, eax
inc edx
or ecx, 1
and edx, eax
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0x10]
shl edx, cl
sub edi, edx
mov dword [esi], edi
mov edi, dword [esp + 0x28]
movzx ecx, byte [edi + 0x696628]
xor edx, edx
test edi, edi
setg dl
xor ebp, eax
sub ebp, eax
mov eax, dword [esp + 0x24]
inc edi
mov dword [esp + 0x28], edi
imul bp, word [eax + edx*4]
mov edx, dword [esp + 0x2c]
mov word [edx + ecx*2], bp
cmp edi, 0x10
jl 0x5edf56
pop edi
pop esi
pop ebp
mov eax, 0x10
pop ebx
add esp, 0xc
ret
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret