Function at 0x5485c4
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x5ac640]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
or edx, 0xffffffff
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [eax]
mov dword [ebp - 0x3c], eax
mov eax, dword [eax + 8]
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], 1
mov ecx, dword [eax]
mov esi, dword [eax + 0xc]
xor eax, eax
mov dword [ebp - 0x40], ecx
mov ecx, eax
mov dword [ebp - 0x34], esi
mov dword [ebx + 0x1450], eax
mov dword [ebx + 0x1454], 0x23d
test esi, esi
jle 0x548658
cmp word [edi + ecx*4], ax
je 0x54863e
inc dword [ebx + 0x1450]
mov edx, ecx
mov eax, dword [ebx + 0x1450]
mov dword [ebx + eax*4 + 0xb5c], ecx
xor eax, eax
mov byte [ebx + ecx + 0x1458], al
jmp 0x548645
xor eax, eax
mov word [edi + ecx*4 + 2], ax
inc ecx
cmp ecx, esi
jl 0x548618
mov eax, dword [ebx + 0x1450]
mov dword [ebp - 0x28], edx
cmp eax, 2
jge 0x5486b4
cmp edx, 2
lea ecx, [edx + 1]
mov esi, ecx
cmovge esi, edx
and dword [ebp - 0x28], 0
cmp edx, 2
cmovge ecx, dword [ebp - 0x28]
inc eax
mov dword [ebx + 0x1450], eax
mov dword [ebx + eax*4 + 0xb5c], ecx
mov eax, dword [ebp - 0x2c]
mov word [edi + ecx*4], ax
xor eax, eax
mov byte [ebx + ecx + 0x1458], al
dec dword [ebx + 0x16a8]
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x5486a4
movzx eax, word [eax + ecx*4 + 2]
sub dword [ebx + 0x16ac], eax
mov eax, dword [ebx + 0x1450]
mov edx, esi
cmp eax, 2
jl 0x548658
mov dword [ebp - 0x28], esi
mov eax, dword [ebp - 0x3c]
mov dword [eax + 4], edx
mov ecx, dword [ebx + 0x1450]
mov eax, ecx
cdq
sub eax, edx
mov edx, ecx
mov esi, eax
sar esi, 1
cmp esi, dword [ebp - 0x2c]
jl 0x5486e9
push esi
push edi
push ebx
call fcn.00548f98
add esp, 0xc
dec esi
cmp esi, dword [ebp - 0x2c]
jge 0x5486d0
mov ecx, dword [ebx + 0x1450]
mov edx, ecx
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebx + ecx*4 + 0xb5c]
mov edi, dword [ebx + 0xb60]
push esi
push dword [ebp - 0x30]
mov dword [ebx + 0xb60], eax
lea eax, [edx - 1]
push ebx
mov dword [ebx + 0x1450], eax
call fcn.00548f98
dec dword [ebx + 0x1454]
mov eax, dword [ebx + 0x1454]
mov esi, dword [ebx + 0xb60]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x34]
mov dword [ebx + eax*4 + 0xb5c], edi
dec dword [ebx + 0x1454]
mov eax, dword [ebx + 0x1454]
mov dword [ebx + eax*4 + 0xb5c], esi
mov ax, word [ecx + esi*4]
add ax, word [ecx + edi*4]
mov word [ecx + edx*4], ax
mov cl, byte [ebx + esi + 0x1458]
mov dl, byte [ebx + edi + 0x1458]
cmp dl, cl
movzx ebx, dl
mov edx, dword [ebp - 0x34]
movzx eax, cl
mov ecx, dword [ebp - 0x30]
cmovb ebx, eax
mov eax, dword [ebp - 0x38]
inc bl
mov byte [eax + edx + 0x1458], bl
mov ebx, dword [ebp - 0x38]
movzx eax, dx
mov word [ecx + esi*4 + 2], ax
mov esi, dword [ebp - 0x2c]
push esi
mov word [ecx + edi*4 + 2], ax
mov dword [ebx + 0xb60], edx
inc edx
push ecx
push ebx
mov dword [ebp - 0x34], edx
call fcn.00548f98
mov ecx, dword [ebx + 0x1450]
add esp, 0x18
mov edx, ecx
cmp ecx, 2
jge 0x5486ec
dec dword [ebx + 0x1454]
mov ecx, dword [ebx + 0x1454]
push dword [ebp - 0x3c]
mov eax, dword [ebx + 0xb60]
push ebx
mov dword [ebx + ecx*4 + 0xb5c], eax
call fcn.00548d1d
pop ecx
xor eax, eax
add ebx, 0xb3c
pop ecx
mov edx, eax
mov ecx, esi
mov ax, word [ebx]
lea ebx, [ebx + 2]
add ax, dx
add ax, ax
movzx edx, ax
mov word [ebp + ecx*2 - 0x24], dx
inc ecx
cmp ecx, 0xf
jle 0x5487e4
mov edi, dword [ebp - 0x28]
xor ecx, ecx
mov esi, ecx
test edi, edi
js 0x548842
mov ebx, dword [ebp - 0x30]
movzx edx, word [ebx + esi*4 + 2]
test edx, edx
je 0x54883d
movzx eax, word [ebp + edx*2 - 0x24]
mov edi, eax
inc eax
mov word [ebp + edx*2 - 0x24], ax
mov eax, edi
shr edi, 1
and eax, 1
or ecx, eax
add ecx, ecx
dec edx
test edx, edx
jg 0x548822
mov edi, dword [ebp - 0x28]
shr ecx, 1
mov word [ebx + esi*4], cx
xor ecx, ecx
inc esi
cmp esi, edi
jle 0x54880c
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.007dac04
leave
ret