Function at 0x4524f0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x1c
mov eax, dword [0x4b000c]
xor eax, esp
mov dword [esp + 0x18], eax
push ebx
mov ebx, dword [esp + 0x28]
push ebp
push esi
push edi
mov edi, ecx
mov ebp, edx
mov edx, dword [esp + 0x30]
xor esi, esi
mov dword [esp + 0x10], edx
mov eax, dword [edi + 0x98]
cmp eax, 0x10
jle 0x452649
mov dword [edi + 0x1c0], eax
sub eax, dword [edi + 0xa0]
cdq
xor eax, edx
sub eax, edx
sar eax, 4
test eax, eax
jne 0x452545
or eax, 0xffffffff
mov word [ebx], ax
or ecx, eax
jmp 0x452558
neg eax
movzx eax, ax
mov word [ebx], ax
mov ecx, eax
test ax, ax
jg 0x452645
movzx eax, cx
mov dword [esp + 0x14], eax
nop
mov eax, dword [esp + 0x10]
movzx ecx, word [ebp]
movzx esi, word [ebp + 2]
mov edx, ecx
mov word [esp + 0x22], si
mov ax, word [eax]
sub ax, cx
mov word [esp + 0x20], dx
movzx eax, ax
mov dword [esp + 0x1c], eax
mov eax, dword [0x6eb684]
sar si, 4
add si, word [ebx + 2]
sar dx, 4
add dx, word [esp + 0x14]
mov word [esp + 0x26], si
mov word [esp + 0x24], dx
movzx eax, word [eax]
movsx ecx, dx
imul ecx, eax
movsx eax, si
mov al, byte [ecx + eax + 0x6eb7c0]
and al, 0x3f
mov byte [esp + 0x18], al
cmp al, 1
jbe 0x45276b
push dword [esp + 0x18]
lea ecx, [esp + 0x28]
movzx eax, al
push dword [esp + 0x20]
push ecx
mov eax, dword [eax*4 + 0xbfd1e0]
lea ecx, [esp + 0x2c]
push ebp
push ecx
call eax
add esp, 0x14
movzx esi, al
test al, al
je 0x45276d
cmp byte [0xbfabc0], 0
je 0x452605
cmp esi, 0x31
je 0x45276d
cmp word [edi + 0x168], 0
movsx eax, word [esp + 0x20]
jge 0x452617
add eax, 0x20
mov dword [edi + 0x98], eax
shl eax, 5
mov dword [edi + 0x15c], eax
xor eax, eax
or dword [edi + 0x180], 0x20000
mov word [edi + 0x168], ax
mov eax, dword [edi + 0x184]
mov dword [edi + 0x184], eax
mov edx, dword [esp + 0x10]
movzx eax, word [edi + 0x98]
mov word [ebp], ax
mov ecx, eax
cmp word [edi + 0x1b0], 2
jne 0x45266b
lea eax, [ecx - 8]
mov word [ebp], ax
add word [edx], 0xfff8
movzx edx, word [edx + 2]
movsx eax, word [ebp + 2]
movsx ecx, dx
sub ecx, eax
sar ecx, 0x1f
and ecx, 0x20
lea eax, [ecx - 0x10]
movzx ecx, ax
mov dword [esp + 0x18], eax
lea eax, [ecx + edx]
mov edx, dword [esp + 0x10]
mov word [edx + 2], ax
mov ax, word [ebp + 2]
add ax, cx
movzx ecx, ax
mov word [ebp + 2], ax
movzx eax, word [ebp]
mov dword [esp + 0x1c], ecx
mov ecx, eax
mov ebp, dword [esp + 0x1c]
mov bx, cx
mov word [esp + 0x20], ax
mov dx, bp
mov eax, dword [0x6eb684]
sar bx, 4
mov dword [esp + 0x14], ecx
mov word [esp + 0x22], bp
movzx eax, word [eax]
movsx ecx, bx
imul ecx, eax
sar dx, 4
movsx eax, dx
mov al, byte [ecx + eax + 0x6eb7c0]
and al, 0x3f
cmp al, 2
jne 0x452756
shl edx, 4
shl ebx, 4
cmp bp, dx
jle 0x452756
lea ecx, [edx + 0x10]
cmp bp, cx
jge 0x452756
cmp word [esp + 0x14], bx
jle 0x452756
lea eax, [ebx + 0x10]
cmp word [esp + 0x14], ax
jge 0x452756
mov eax, dword [esp + 0x10]
movzx ecx, cx
mov ax, word [eax + 2]
sub ax, bp
movzx eax, dx
cmovs ecx, eax
xor eax, eax
movsx ecx, cx
sub ecx, dword [esp + 0x18]
mov dword [edi + 0x94], ecx
shl ecx, 5
or dword [edi + 0x180], 0x40000000
mov dword [edi + 0x14c], ecx
mov ecx, dword [edi + 0x184]
mov word [edi + 0x158], ax
mov dword [edi + 0x184], ecx
mov ecx, dword [esp + 0x28]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0046ad4d
add esp, 0x1c
ret
xor esi, esi
mov ax, word [ebx]
inc ax
movzx ecx, ax
mov word [ebx], ax
mov eax, ecx
mov dword [esp + 0x14], eax
test cx, cx
jle 0x452560
jmp 0x452645