Function at 0x45a404
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
xor ecx, ecx
nop word cs:[eax + eax]
cmp word [eax + ecx], 0
lea ecx, [ecx + 2]
jne 0x45a410
lea edx, [eax + ecx]
add edx, 0xfffffffe
mov ecx, eax
not ecx
and ecx, edx
add ecx, ecx
xor edx, eax
sub ecx, edx
and ecx, 0xfffe
mov word [esp + 0x14], cx
add ecx, 2
mov word [esp + 0x16], cx
mov dword [esp + 0x18], eax
lea ebp, [esp + 8]
lea esi, [esp + 0x14]
push ebp
push 0
push 0
push 2
push esi
push edi
push 0x15bd542c
call fcn.0045a650
add esp, 0x1c
cmp eax, 0xc0000023
jne 0x45a5b7
push dword [esp + 8]
call fcn.0044bbd0
add esp, 4
push ebp
push dword [esp + 0xc]
push eax
push 2
push esi
push edi
mov ebp, eax
push 0x15bd542c
call fcn.0045a7d0
add esp, 0x1c
mov dword [esp + 0x10], eax
test eax, eax
js 0x45a5aa
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x45a4aa
mov eax, dword [ebp + 4]
mov dword [ecx], eax
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x45a5a1
mov ecx, dword [ebp + 8]
lea edx, [ebp + 0xc]
mov eax, ecx
and eax, 3
je 0x45a4d6
cmp eax, 2
jne 0x45a4e4
shr ecx, 1
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
jmp 0x45a5a1
shr ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
jmp 0x45a5a1
test ecx, ecx
je 0x45a5a1
cmp ecx, 8
jb 0x45a501
mov eax, edi
sub eax, ebp
add eax, 0xfffffff4
cmp eax, 0x10
jae 0x45a5bf
mov eax, edx
mov edx, edi
mov edi, ecx
mov dword [esp], ebp
lea ecx, [edi - 1]
mov ebp, edi
and edi, 7
je 0x45a53a
mov dword [esp + 4], ecx
xor esi, esi
nop word [eax + eax]
movzx ecx, byte [eax + esi]
mov byte [edx + esi], cl
inc esi
cmp edi, esi
jne 0x45a520
add edx, esi
mov edi, ebp
sub edi, esi
add eax, esi
mov ecx, dword [esp + 4]
jmp 0x45a53c
mov edi, ebp
cmp ecx, 7
mov ebp, dword [esp]
jb 0x45a5a1
xor ecx, ecx
nop word cs:[eax + eax]
mov esi, ebx
movzx ebx, byte [eax + ecx]
mov byte [edx + ecx], bl
movzx ebx, byte [eax + ecx + 1]
mov byte [edx + ecx + 1], bl
movzx ebx, byte [eax + ecx + 2]
mov byte [edx + ecx + 2], bl
movzx ebx, byte [eax + ecx + 3]
mov byte [edx + ecx + 3], bl
movzx ebx, byte [eax + ecx + 4]
mov byte [edx + ecx + 4], bl
movzx ebx, byte [eax + ecx + 5]
mov byte [edx + ecx + 5], bl
movzx ebx, byte [eax + ecx + 6]
mov byte [edx + ecx + 6], bl
movzx ebx, byte [eax + ecx + 7]
mov byte [edx + ecx + 7], bl
mov ebx, esi
add ecx, 8
cmp edi, ecx
jne 0x45a550
test ebx, ebx
je 0x45a5aa
mov eax, dword [ebp + 8]
mov dword [ebx], eax
push ebp
call fcn.0044bbf0
add esp, 4
mov eax, dword [esp + 0x10]
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
cmp ecx, 0x10
jb 0x45a5f1
mov esi, ecx
and esi, 0xfffffff0
xor eax, eax
movups xmm0, xmmword [edx + eax]
movups xmmword [edi + eax], xmm0
add eax, 0x10
cmp esi, eax
jne 0x45a5cd
cmp ecx, esi
je 0x45a5a1
test cl, 8
jne 0x45a5f1
add edx, esi
and ecx, 0xf
add edi, esi
jmp 0x45a501
mov eax, ecx
and eax, 0xfffffff8
mov dword [esp], eax
mov eax, ecx
mov ecx, edx
mov edx, dword [esp]
add edx, edi
mov dword [esp + 0xc], eax
and eax, 7
mov dword [esp + 4], eax
mov eax, dword [esp]
add eax, ecx
nop word cs:[eax + eax]
movsd xmm0, qword [ecx + esi]
movsd qword [edi + esi], xmm0
add esi, 8
cmp dword [esp], esi
jne 0x45a620
mov ecx, dword [esp]
cmp dword [esp + 0xc], ecx
mov edi, dword [esp + 4]
jne 0x45a507
jmp 0x45a5a1