Function at 0x56cf00
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x98
push ebx
push ebp
mov ebp, dword [esp + 0xa4]
mov eax, edx
push esi
mov esi, ecx
sar ebp, 1
lea ecx, [esp + 0x5c]
mov dword [esp + 0x50], eax
push edi
mov dword [esp + 0x58], ecx
lea edx, [esp + 0x60]
lea ecx, [esp + 0x84]
mov dword [esp + 0x40], esi
push ebp
mov dword [esp + 0x60], ecx
push ecx
mov ecx, eax
mov dword [esp + 0x40], ebp
call fcn.0056ce20
lea ebx, [esp + 0x68]
mov edi, 0x2000
push ebp
mov edx, edi
mov dword [esp + 0x24], ebx
mov ecx, ebx
mov dword [esp + 0x20], edi
call fcn.0056cdd0
mov ebp, eax
add esp, 0xc
xor eax, eax
mov dword [esp + 0x10], ebp
test ebp, ebp
jns 0x56cf9c
mov word [esi], ax
lea ebx, [esp + 0x84]
mov esi, dword [esp + 0x38]
mov edx, edi
push esi
mov ecx, ebx
mov dword [esp + 0x1c], ebx
call fcn.0056cdd0
mov ebp, eax
mov dword [esp + 0x20], 1
add esp, 4
mov dword [esp + 0x10], ebp
jmp 0x56cfa4
mov esi, dword [esp + 0x38]
mov dword [esp + 0x1c], eax
xor ecx, ecx
mov dword [esp + 0x48], 0
lea edx, [esi*4]
mov dword [esp + 0x24], ecx
dec esi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x28], esi
mov eax, 1
mov dword [esp + 0x20], eax
jmp 0x56cfd0
mov edx, dword [edx + ebx]
mov ebx, edx
movsx ecx, word [eax*2 + 0x5e73d0]
mov dword [esp + 0x4c], edx
mov edx, ecx
shl edx, 4
mov dword [esp + 0x34], ecx
mov dword [esp + 0x2c], ebx
test esi, esi
js 0x56d035
mov ebp, dword [esp + 0x18]
movsx edi, dx
sar edx, 0xf
inc edx
sar edx, 1
nop
movzx ecx, bx
mov eax, ebx
imul ecx, edi
sar eax, 0x10
imul eax, edi
imul ebx, edx
sar ecx, 0x10
add ecx, eax
add ecx, dword [ebp + esi*4]
add ebx, ecx
sub esi, 1
jns 0x56d000
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], ebx
mov edx, dword [esp + 0x24]
test ebp, ebp
jg 0x56d043
cmp ebx, edx
jge 0x56d053
test ebp, ebp
js 0x56d1c8
neg edx
cmp ebx, edx
jg 0x56d1c8
xor eax, eax
mov dword [esp + 0x30], 0xffffff00
test ebx, ebx
sete al
xor edx, edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x44], edx
lea esp, [esp]
lea eax, [ecx + edi]
mov edi, dword [esp + 0x28]
mov ecx, eax
and eax, 1
sar ecx, 1
add ecx, eax
mov eax, dword [esp + 0x4c]
mov esi, ecx
mov dword [esp + 0x50], ecx
shl esi, 4
test edi, edi
js 0x56d0d1
mov ebp, dword [esp + 0x18]
movsx ebx, si
sar esi, 0xf
inc esi
sar esi, 1
mov edi, edi
movzx edx, ax
mov ecx, eax
imul edx, ebx
sar ecx, 0x10
imul ecx, ebx
imul eax, esi
sar edx, 0x10
add edx, ecx
add edx, dword [ebp + edi*4]
add eax, edx
sub edi, 1
jns 0x56d0a0
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0x2c]
test ebp, ebp
jg 0x56d0db
test eax, eax
jns 0x56d0e1
test ebp, ebp
js 0x56d0f5
test eax, eax
jg 0x56d0f5
mov esi, dword [esp + 0x30]
mov ebx, eax
mov edi, dword [esp + 0x14]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x2c], ebx
jmp 0x56d118
mov esi, dword [esp + 0x30]
mov edi, ecx
mov ebp, eax
mov dword [esp + 0x14], edi
mov ecx, edx
mov dword [esp + 0x10], ebp
mov eax, 0x80
sar eax, cl
mov ecx, dword [esp + 0x34]
add esi, eax
mov dword [esp + 0x30], esi
inc edx
mov dword [esp + 0x44], edx
cmp edx, 3
jl 0x56d070
mov eax, ebp
mov ecx, ebp
cdq
sub ecx, ebx
xor eax, edx
sub eax, edx
cmp eax, 0x10000
jge 0x56d147
test ecx, ecx
je 0x56d151
mov eax, ecx
shl ebp, 5
sar eax, 1
add eax, ebp
jmp 0x56d14c
sar ecx, 5
mov eax, ebp
cdq
idiv ecx
add esi, eax
mov ebp, dword [esp + 0x20]
mov ecx, 0x7fff
mov edi, dword [esp + 0x1c]
mov edx, ebp
shl edx, 8
add edx, esi
cmp edx, ecx
movzx eax, dx
cmovl ecx, eax
mov eax, dword [esp + 0x40]
mov word [eax + edi*2], cx
inc edi
mov dword [esp + 0x1c], edi
cmp edi, dword [esp + 0xac]
jge 0x56d2f5
mov esi, dword [esp + 0x28]
mov eax, edi
mov edx, dword [esp + 0x3c]
and eax, 1
mov ebx, dword [esp + eax*4 + 0x58]
movsx eax, word [ebp*2 + 0x5e73ce]
mov ebp, 0x1000
mov dword [esp + 0x14], eax
mov eax, edi
mov edi, dword [esp + 0x14]
and eax, 2
shl eax, 0xc
sub ebp, eax
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], ebp
jmp 0x56cfd0
mov esi, dword [esp + 0x28]
inc eax
mov edx, dword [esp + 0x3c]
mov edi, ecx
mov ebp, ebx
mov dword [esp + 0x20], eax
mov ebx, dword [esp + 0x18]
xor ecx, ecx
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], ebp
mov dword [esp + 0x24], ecx
cmp eax, 0x80
jle 0x56cfd0
mov eax, dword [esp + 0x48]
inc eax
mov dword [esp + 0x48], eax
cmp eax, 0x1e
jg 0x56d2c0
movzx ecx, ax
lea eax, [ecx + 0xa]
movsx edx, ax
movsx eax, cx
mov ecx, dword [esp + 0x54]
imul edx, eax
mov eax, 0x10000
sub eax, edx
mov edx, dword [esp + 0xac]
push eax
call fcn.0056f480
mov esi, dword [esp + 0x3c]
lea eax, [esp + 0x88]
mov ecx, dword [esp + 0x58]
lea edx, [esp + 0x64]
push esi
push eax
call fcn.0056ce20
lea ebx, [esp + 0x6c]
mov edi, 0x2000
push esi
mov edx, edi
mov dword [esp + 0x28], ebx
mov ecx, ebx
mov dword [esp + 0x24], edi
call fcn.0056cdd0
mov ebp, eax
add esp, 0x10
mov dword [esp + 0x10], ebp
test ebp, ebp
jns 0x56d2ad
mov eax, dword [esp + 0x40]
lea ebx, [esp + 0x84]
xor ecx, ecx
mov dword [esp + 0x18], ebx
push esi
mov edx, edi
mov word [eax], cx
mov ecx, ebx
call fcn.0056cdd0
mov esi, dword [esp + 0x2c]
mov ebp, eax
mov edx, dword [esp + 0x40]
add esp, 4
mov dword [esp + 0x10], ebp
mov dword [esp + 0x1c], 1
jmp 0x56cfc2
mov esi, dword [esp + 0x28]
xor eax, eax
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x1c], eax
jmp 0x56cfc2
mov ebp, dword [esp + 0xac]
mov eax, 0x8000
cdq
mov ebx, dword [esp + 0x40]
lea ecx, [ebp + 1]
idiv ecx
mov edx, 1
mov word [ebx], ax
cmp ebp, edx
jle 0x56d2f5
movsx ecx, word [ebx]
lea eax, [edx + 1]
cwde
imul eax, ecx
mov word [ebx + edx*2], ax
inc edx
cmp edx, ebp
jl 0x56d2e2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret