Function at 0x44ccf0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
add eax, esi
sub eax, dword [esp + 0x4c]
mov dword [ebx + 4], 0
mov dword [ebx], 0
mov dword [ebx + 8], 0
mov dword [esp + 0x24], eax
cmp eax, esi
jbe 0x44cfe7
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
lea ebp, [eax - 1]
xor eax, eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0x20], ebp
jmp 0x44cd85
mov ebp, ebx
mov ebx, eax
mov edi, dword [esp + 8]
sub ebx, edi
mov edx, ebx
sar edx, 2
cmp eax, dword [esp + 4]
je 0x44cdd5
mov ebx, edi
mov dword [ebx + edx*4], esi
add eax, 4
mov dword [ebp + 4], eax
mov edx, dword [esp + 0x20]
add esi, edx
mov ebx, ebp
mov ebp, edx
inc esi
cmp esi, dword [esp + 0x24]
jae 0x44cfe7
test ecx, ecx
je 0x44cd8e
cmp byte [ecx], 0x3f
je 0x44cd99
movzx edx, byte [esi]
mov edi, dword [esp + 0x48]
cmp dl, byte [edi]
jne 0x44cd7a
cmp dword [esp + 0x4c], 2
jb 0x44cd50
xor edx, edx
jmp 0x44cdc8
movzx ecx, byte [esi + edx + 1]
mov edi, dword [esp + 0x48]
cmp cl, byte [edi + edx + 1]
mov ecx, dword [esp + 0x50]
jne 0x44ce3f
inc edx
cmp ebp, edx
je 0x44cd50
test ecx, ecx
je 0x44cdb0
cmp byte [ecx + edx + 1], 0x3f
jne 0x44cdb0
jmp 0x44cdc3
mov dword [esp], ebx
lea ebx, [edx + 1]
mov eax, edx
shr eax, 1
mov ecx, eax
and ecx, edx
mov dword [esp + 0x1c], edx
xor eax, edx
lea eax, [eax + ecx*2]
cmp eax, ebx
cmova ebx, eax
lea eax, [ebx*4]
mov dword [esp + 4], ebx
cmp ebx, 0x40000000
mov ecx, 0xffffffff
cmovae eax, ecx
mov ecx, dword fs:[0x30]
push eax
push 0
push dword [ecx + 0x18]
call dword [0x4809ac]
mov ebx, eax
test edi, edi
je 0x44cf0a
cmp ebx, edi
mov dword [esp + 0x10], ebx
jae 0x44ce46
mov eax, edi
mov edi, ebx
mov ecx, dword [esp]
xchg esi, eax
rep movsb byte es:[edi], byte [esi]
xchg esi, eax
jmp 0x44ceed
add esi, edx
jmp 0x44cd7a
mov ebx, dword [esp]
test ebx, ebx
je 0x44ceed
mov eax, dword [esp + 8]
lea ebp, [eax + ebx]
dec ebp
mov ecx, dword [esp + 0x10]
lea edx, [ecx + ebx]
dec edx
cmp ebx, 4
jae 0x44cf2f
mov eax, ebp
mov ecx, edx
mov ebp, ebx
lea edx, [ebp - 1]
mov ebx, ebp
and ebx, 7
je 0x44ce91
mov dword [esp], edx
xor edi, edi
nop
movzx edx, byte [eax]
dec eax
mov byte [ecx], dl
dec ecx
inc edi
cmp ebx, edi
jne 0x44ce80
sub ebp, edi
mov edx, dword [esp]
cmp edx, 7
jb 0x44ceed
neg ebp
xor edx, edx
nop word [eax + eax]
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
movzx ebx, byte [eax + edx - 1]
mov byte [ecx + edx - 1], bl
movzx ebx, byte [eax + edx - 2]
mov byte [ecx + edx - 2], bl
movzx ebx, byte [eax + edx - 3]
mov byte [ecx + edx - 3], bl
movzx ebx, byte [eax + edx - 4]
mov byte [ecx + edx - 4], bl
movzx ebx, byte [eax + edx - 5]
mov byte [ecx + edx - 5], bl
movzx ebx, byte [eax + edx - 6]
mov byte [ecx + edx - 6], bl
movzx ebx, byte [eax + edx - 7]
mov byte [ecx + edx - 7], bl
add edx, 0xfffffff8
cmp ebp, edx
jne 0x44cea0
mov eax, dword fs:[0x30]
push dword [esp + 8]
push 0
push dword [eax + 0x18]
call dword [0x4809b4]
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x10]
mov dword [ebp], ebx
mov edx, dword [esp + 0x1c]
lea eax, [ebx + edx*4]
mov ecx, dword [esp + 4]
lea ecx, [ebx + ecx*4]
mov dword [esp + 4], ecx
mov dword [ebp + 8], ecx
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x50]
jmp 0x44cd67
cmp ecx, edx
ja 0x44ce6a
cmp eax, ebp
ja 0x44ce6a
sub eax, ecx
cmp eax, 0x10
jb 0x44ce6a
xor edi, edi
cmp ebx, 0x10
jb 0x44cf7e
mov edi, ebx
and edi, 0xfffffff0
mov eax, edi
neg eax
xor ecx, ecx
nop dword [eax]
movups xmm0, xmmword [ebp + ecx - 0xf]
movups xmmword [edx + ecx - 0xf], xmm0
add ecx, 0xfffffff0
cmp eax, ecx
jne 0x44cf60
cmp ebx, edi
je 0x44ceed
test bl, 0xc
je 0x44cfdb
mov ecx, ebx
and ecx, 0xfffffffc
mov dword [esp + 0xc], ecx
mov eax, ecx
neg eax
mov dword [esp + 0x18], eax
mov eax, ebp
sub eax, ecx
mov ecx, edx
sub ecx, dword [esp + 0xc]
mov dword [esp + 0x14], ebp
mov ebp, ebx
and ebp, 3
neg edi
nop word cs:[eax + eax]
mov ebx, edx
mov edx, dword [esp + 0x14]
mov edx, dword [edx + edi - 3]
mov dword [ebx + edi - 3], edx
mov edx, ebx
add edi, 0xfffffffc
cmp dword [esp + 0x18], edi
jne 0x44cfb0
mov edx, dword [esp + 0xc]
cmp dword [esp], edx
jne 0x44ce70
jmp 0x44ceed
and ebx, 0xf
sub edx, edi
sub ebp, edi
jmp 0x44ce6a
mov eax, ebx
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret