Function at 0x443030
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
mov ecx, 0xfffffffe
nop dword [eax + eax]
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x443050
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 + 0x18], dx
add ecx, esi
add ecx, 2
mov word [esp + 0x1a], cx
mov dword [esp + 0x1c], eax
lea ebp, [esp + 8]
lea esi, [esp + 0x18]
push ebp
push 0
push 0
push 2
push esi
push edi
push 0xde689d2b
call fcn.004432a0
add esp, 0x1c
cmp eax, 0xc0000023
jne 0x443207
push dword [esp + 8]
call fcn.0043bd40
add esp, 4
push ebp
push dword [esp + 0xc]
push eax
push 2
push esi
push edi
mov ebp, eax
push 0xde689d2b
call fcn.004434a0
add esp, 0x1c
mov dword [esp + 0x14], eax
test eax, eax
js 0x4431fa
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x4430f3
mov eax, dword [ebp + 4]
mov dword [ecx], eax
mov edi, dword [esp + 0x40]
test edi, edi
je 0x4431f1
mov ecx, dword [ebp + 8]
lea edx, [ebp + 0xc]
mov eax, ecx
and eax, 3
je 0x44311f
cmp eax, 2
jne 0x44312d
shr ecx, 1
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
jmp 0x4431f1
shr ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
jmp 0x4431f1
test ecx, ecx
je 0x4431f1
cmp ecx, 8
jb 0x44314a
mov eax, edi
sub eax, ebp
add eax, 0xfffffff4
cmp eax, 0x10
jae 0x44320f
mov eax, edx
mov edx, edi
mov edi, ecx
mov dword [esp], ebp
lea ecx, [edi - 1]
mov ebp, edi
and edi, 7
je 0x44318a
mov dword [esp + 4], ecx
xor esi, esi
nop word cs:[eax + eax]
movzx ecx, byte [eax + esi]
mov byte [edx + esi], cl
inc esi
cmp edi, esi
jne 0x443170
add eax, esi
add edx, esi
mov edi, ebp
sub edi, esi
mov ecx, dword [esp + 4]
jmp 0x44318c
mov edi, ebp
cmp ecx, 7
mov ebp, dword [esp]
jb 0x4431f1
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 0x4431a0
test ebx, ebx
je 0x4431fa
mov eax, dword [ebp + 8]
mov dword [ebx], eax
push ebp
call fcn.0043bd60
add esp, 4
mov eax, dword [esp + 0x14]
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
cmp ecx, 0x10
jb 0x443241
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 0x44321d
cmp ecx, esi
je 0x4431f1
test cl, 8
jne 0x443241
and ecx, 0xf
add edi, esi
add edx, esi
jmp 0x44314a
mov eax, ecx
and eax, 0xfffffff8
mov dword [esp], eax
mov eax, dword [esp]
add eax, edx
mov dword [esp + 4], edx
mov edx, dword [esp]
add edx, edi
mov dword [esp + 0x10], ecx
and ecx, 7
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 4]
nop word cs:[eax + eax]
movsd xmm0, qword [ecx + esi]
movsd qword [edi + esi], xmm0
add esi, 8
cmp dword [esp], esi
jne 0x443270
mov ecx, dword [esp]
cmp dword [esp + 0x10], ecx
mov edi, dword [esp + 0xc]
jne 0x443150
jmp 0x4431f1