Function at 0x451eb0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
mov ecx, 0xfffffffe
nop word cs:[eax + eax]
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x451ed0
sar ecx, 1
mov edx, ecx
and edx, 2
mov esi, ecx
or ecx, 2
imul ecx, edx
xor edx, 2
and esi, 0xfffd
imul esi, edx
lea edx, [esi + ecx]
mov word [esp + 0x14], dx
add ecx, esi
add ecx, 2
mov word [esp + 0x16], cx
mov dword [esp + 0x18], eax
lea ebp, [esp + 0xc]
lea esi, [esp + 0x14]
push ebp
push 0
push 0
push 2
push esi
push edi
push 0x15bd542c
call fcn.00452110
add esp, 0x1c
mov ebx, eax
cmp eax, 0xc0000023
jne 0x452087
push dword [esp + 0xc]
call fcn.00449e70
add esp, 4
push ebp
mov ebp, eax
push dword [esp + 0x10]
push eax
push 2
push esi
push edi
push 0x15bd542c
call fcn.004522f0
add esp, 0x1c
mov ebx, eax
test eax, eax
mov edi, dword [esp + 0x3c]
js 0x45207e
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x451f77
mov eax, dword [ebp + 4]
mov dword [ecx], eax
cmp dword [esp + 0x40], 0
je 0x45207e
mov dword [esp + 8], ebp
test edi, edi
je 0x452071
mov eax, dword [esp + 0x40]
mov eax, dword [eax]
mov edx, dword [esp + 8]
mov ecx, dword [edx + 8]
cmp eax, ecx
cmovb ecx, eax
add edx, 0xc
mov eax, ecx
not eax
or eax, 3
add eax, ecx
inc eax
je 0x451fc2
cmp eax, 2
jne 0x451fd0
shr ecx, 1
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
jmp 0x452071
shr ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
jmp 0x452071
test ecx, ecx
je 0x452071
cmp ecx, 8
jb 0x451fef
mov eax, edi
sub eax, dword [esp + 8]
add eax, 0xfffffff4
cmp eax, 0x10
jae 0x452091
mov ebp, edx
mov edx, edi
lea esi, [ecx - 1]
mov edi, ecx
and edi, 3
je 0x45202b
mov dword [esp], esi
mov dword [esp + 4], edi
lea edi, [ecx + ecx]
xor esi, esi
nop dword [eax]
movzx eax, byte [ebp + esi]
mov byte [edx + esi], al
inc esi
add edi, 0xfffffffe
cmp dword [esp + 4], esi
jne 0x452010
add ebp, esi
add edx, esi
sub ecx, esi
mov esi, dword [esp]
cmp esi, 3
jb 0x452071
mov esi, 1
sub esi, ecx
add ecx, ecx
xor edi, edi
nop dword [eax + eax]
movzx eax, byte [ebp + edi*2]
mov byte [edx + edi*2], al
movzx eax, byte [ebp + edi*2 + 1]
mov byte [edx + edi*2 + 1], al
movzx eax, byte [ebp + edi*2 + 2]
mov byte [edx + edi*2 + 2], al
movzx eax, byte [ebp + edi*2 + 3]
mov byte [edx + edi*2 + 3], al
add edi, 2
add esi, 4
add ecx, 0xfffffff8
cmp esi, 1
jne 0x452040
mov ebp, dword [esp + 8]
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x40]
mov dword [ecx], eax
push ebp
call fcn.00449e90
add esp, 4
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebp, ebp
cmp ecx, 0x10
jb 0x4520c3
mov ebp, ecx
and ebp, 0xfffffff0
xor eax, eax
movups xmm0, xmmword [edx + eax]
movups xmmword [edi + eax], xmm0
add eax, 0x10
cmp ebp, eax
jne 0x45209f
cmp ecx, ebp
je 0x452071
test cl, 8
jne 0x4520c3
and ecx, 0xf
add edi, ebp
add edx, ebp
jmp 0x451fef
mov esi, ecx
and esi, 0xfffffff8
lea eax, [edx + esi]
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, esi
lea edx, [edi + esi]
mov dword [esp + 0x10], ecx
and ecx, 7
mov eax, dword [esp + 4]
movsd xmm0, qword [eax + ebp]
movsd qword [edi + ebp], xmm0
add ebp, 8
mov eax, esi
cmp esi, ebp
jne 0x4520de
cmp dword [esp + 0x10], esi
mov ebp, dword [esp]
jne 0x451ff3
jmp 0x452071