Function at 0x441d00
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [esp + 0x3c]
xor ecx, ecx
test eax, eax
je 0x441d33
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx], 0
lea ecx, [ecx + 2]
jne 0x441d20
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 0x1c], cx
mov edx, eax
test eax, eax
je 0x441d43
add ecx, 2
mov edx, ecx
mov esi, dword [esp + 0x44]
mov word [esp + 0x1e], dx
mov dword [esp + 0x20], eax
mov dword [esp], 0x94959697
mov byte [esp + 4], 0
mov eax, 0x24
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x24]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x4c
mov byte [esp + eax - 0x24], cl
inc eax
cmp eax, 0x29
jne 0x441d70
mov eax, dword [esp]
mov edi, dword [0x44dd14]
test edi, edi
je 0x441ded
xor ecx, ecx
mov edx, dword [0x44dd18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x877f203a
je 0x441dc0
inc ecx
cmp edi, ecx
jne 0x441db0
jmp 0x441ded
mov edi, dword [edx + ecx*8 + 4]
cmp edi, eax
je 0x441ded
lea ecx, [esp + 0x10]
lea edx, [esp + 0x1c]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x4c]
push 0x18
push edi
push dword [0x44dd1c]
call fcn.0043e8e0
add esp, 0x24
mov dword [esp], 0xbf7e795f
mov dword [esp + 4], 0
mov ebx, 0x15
mov ecx, 0xea
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0xea]
lea edi, [edx + edx]
not edi
add edi, edx
mov ebp, ecx
or ebp, edx
not edx
and edx, edi
or edx, ebx
and edx, ebp
add dl, 0x6e
mov byte [esp + ecx - 0xea], dl
dec ebx
inc ecx
cmp ebx, 0xd
jne 0x441e10
cmp eax, dword [esp]
jne 0x44204a
push dword [esp + 0x10]
call fcn.0043c380
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], 0xf3f2f1f2
mov word [esp + 0x18], 0
mov eax, 0x49abc6ac
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x49abc698]
lea ebx, [eax - 0x49abc600]
mov edx, edi
not edx
or edx, ebx
and ebx, edi
mov ebp, eax
xor ebp, edi
sub ebp, edi
add ebp, ebx
not edx
or edx, ebp
add dl, 0xa4
mov byte [esp + eax - 0x49abc698], dl
inc eax
cmp eax, 0x49abc6b2
jne 0x441e80
mov edx, dword [esp + 0x14]
mov dword [esp], 0x94959697
mov byte [esp + 4], 0
mov eax, 0x24
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x24]
mov ebx, ecx
and ebx, eax
add bl, bl
sub cl, bl
movzx ecx, cl
add ecx, eax
add cl, 0x4c
mov byte [esp + eax - 0x24], cl
inc eax
cmp eax, 0x29
jne 0x441ed0
mov ecx, dword [esp]
mov eax, dword [0x44dd14]
test eax, eax
je 0x441f24
xor ebp, ebp
mov edi, dword [0x44dd18]
mov ebx, dword [esp + 0x40]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebp*8], 0x877f203a
je 0x442052
inc ebp
cmp eax, ebp
jne 0x441f10
jmp 0x441f28
mov ebx, dword [esp + 0x40]
mov eax, ecx
mov dword [esp + 0xc], eax
test eax, eax
js 0x44203a
test ebx, ebx
je 0x441f43
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
mov dword [ebx], eax
cmp dword [esp + 0x48], 0
je 0x44203a
test esi, esi
je 0x44202d
mov eax, dword [esp + 0x48]
mov ebx, dword [eax]
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 8]
cmp ebx, ecx
jb 0x441f69
mov ebx, ecx
mov edx, dword [esp + 8]
lea ebp, [edx + 0xc]
mov ecx, ebx
shr ecx, 2
mov edi, esi
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
mov ecx, ebx
and ecx, 0xfffffffc
add esi, ecx
add edx, ecx
add edx, 0xc
mov ecx, ebx
and ecx, 3
mov ebp, ecx
not ebp
or ebp, 1
add ebp, ecx
shr ecx, 1
mov eax, edx
mov edi, esi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, ebp
inc ecx
je 0x44202d
and ebx, 2
add edx, ebx
add esi, ebx
mov edi, ecx
and edi, 7
je 0x441fd2
xor eax, eax
nop
nop
nop
nop
nop
movzx ebx, byte [edx + eax]
mov byte [esi + eax], bl
inc eax
cmp edi, eax
jne 0x441fc0
add edx, eax
add esi, eax
sub ecx, eax
cmp ebp, 7
jb 0x44202d
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edx + eax]
mov byte [esi + eax], bl
movzx ebx, byte [edx + eax + 1]
mov byte [esi + eax + 1], bl
movzx ebx, byte [edx + eax + 2]
mov byte [esi + eax + 2], bl
movzx ebx, byte [edx + eax + 3]
mov byte [esi + eax + 3], bl
movzx ebx, byte [edx + eax + 4]
mov byte [esi + eax + 4], bl
movzx ebx, byte [edx + eax + 5]
mov byte [esi + eax + 5], bl
movzx ebx, byte [edx + eax + 6]
mov byte [esi + eax + 6], bl
movzx ebx, byte [edx + eax + 7]
mov byte [esi + eax + 7], bl
add eax, 8
cmp ecx, eax
jne 0x441fe0
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x48]
mov dword [ecx], eax
push dword [esp + 8]
call fcn.0043c450
add esp, 4
mov eax, dword [esp + 0xc]
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebp, dword [edi + ebp*8 + 4]
mov eax, ecx
cmp ebp, ecx
je 0x441f2a
lea ecx, [esp + 0x10]
lea edi, [esp + 0x1c]
push ecx
push dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
push ecx
push edx
push edi
push dword [esp + 0x4c]
push 0x18
push ebp
push dword [0x44dd1c]
call fcn.0043e8e0
add esp, 0x24
jmp 0x441f2a