Function at 0x443530
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 0x443550
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.004437a0
add esp, 0x1c
cmp eax, 0xc0000023
jne 0x443707
push dword [esp + 8]
call fcn.0043b230
add esp, 4
push ebp
push dword [esp + 0xc]
push eax
push 2
push esi
push edi
mov ebp, eax
push 0xde689d2b
call fcn.00443970
add esp, 0x1c
mov dword [esp + 0x14], eax
test eax, eax
js 0x4436fa
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x4435f3
mov eax, dword [ebp + 4]
mov dword [ecx], eax
mov edi, dword [esp + 0x40]
test edi, edi
je 0x4436f1
mov ecx, dword [ebp + 8]
lea edx, [ebp + 0xc]
mov eax, ecx
and eax, 3
je 0x44361f
cmp eax, 2
jne 0x44362d
shr ecx, 1
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
jmp 0x4436f1
shr ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
jmp 0x4436f1
test ecx, ecx
je 0x4436f1
cmp ecx, 8
jb 0x44364a
mov eax, edi
sub eax, ebp
add eax, 0xfffffff4
cmp eax, 0x10
jae 0x44370f
mov eax, edx
mov edx, edi
mov edi, ecx
mov dword [esp], ebp
lea ecx, [edi - 1]
mov ebp, edi
and edi, 7
je 0x44368a
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 0x443670
add eax, esi
add edx, esi
mov edi, ebp
sub edi, esi
mov ecx, dword [esp + 4]
jmp 0x44368c
mov edi, ebp
cmp ecx, 7
mov ebp, dword [esp]
jb 0x4436f1
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 0x4436a0
test ebx, ebx
je 0x4436fa
mov eax, dword [ebp + 8]
mov dword [ebx], eax
push ebp
call fcn.0043b250
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 0x443741
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 0x44371d
cmp ecx, esi
je 0x4436f1
test cl, 8
jne 0x443741
and ecx, 0xf
add edi, esi
add edx, esi
jmp 0x44364a
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 0x443770
mov ecx, dword [esp]
cmp dword [esp + 0x10], ecx
mov edi, dword [esp + 0xc]
jne 0x443650
jmp 0x4436f1