Function at 0x444450
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov eax, dword [esp + 0x30]
test eax, eax
je 0x44449a
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x444470
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
add ecx, esi
jmp 0x44449c
xor ecx, ecx
mov word [esp + 0xc], cx
mov edx, eax
test eax, eax
je 0x4444ac
add ecx, 2
mov edx, ecx
mov edi, dword [esp + 0x2c]
mov word [esp + 0xe], dx
mov dword [esp + 0x10], eax
mov dword [esp], 0x80b0a0d
mov byte [esp + 4], 0
mov eax, 0xc3
mov ecx, 0x3c
nop
movzx esi, byte [esp + eax - 0xc3]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x31
mov byte [esp + eax - 0xc3], dl
inc eax
dec ecx
cmp eax, 0xc8
jne 0x4444d0
mov ebx, dword [esp]
mov eax, dword [0x44f890]
test eax, eax
je 0x44454c
xor ecx, ecx
mov edx, dword [0x44f894]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xbbe848dd
je 0x444520
inc ecx
cmp eax, ecx
jne 0x444510
jmp 0x44454c
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x44454c
lea ecx, [esp + 8]
lea edx, [esp + 0xc]
push ecx
push 0
push 0
push 2
push edx
push edi
push 6
push dword [0x44f898]
push eax
call fcn.0043ff80
add esp, 0x24
mov ebx, eax
mov dword [esp], 0xd7161947
mov dword [esp + 4], 0
mov eax, 0x99dcc486
mov ecx, 0x66233b79
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x66233b7a]
mov esi, edx
not esi
lea ebp, [edx + edx]
not ebp
add ebp, edx
and ebp, esi
or ebp, ecx
or edx, eax
and edx, ebp
mov esi, edx
and esi, 0x61
or edx, 0x61
add edx, esi
inc dl
mov byte [esp + eax + 0x66233b7a], dl
inc eax
dec ecx
cmp eax, 0x99dcc48e
jne 0x444570
cmp ebx, dword [esp]
jne 0x4446f0
push dword [esp + 8]
call fcn.0043da60
add esp, 4
mov ecx, dword [esp + 8]
mov dword [esp], 0x80b0a0d
mov byte [esp + 4], 0
mov edx, 0xc3
mov esi, 0x3c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edx - 0xc3]
mov ebx, esi
xor ebx, edx
and ebx, ebp
xor ebx, edx
add bl, 0x31
mov byte [esp + edx - 0xc3], bl
inc edx
dec esi
cmp edx, 0xc8
jne 0x4445e0
mov ebx, dword [esp]
mov edx, dword [0x44f890]
test edx, edx
je 0x44465e
xor ebp, ebp
mov esi, dword [0x44f894]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + ebp*8], 0xbbe848dd
je 0x444630
inc ebp
cmp edx, ebp
jne 0x444620
jmp 0x44465e
mov edx, dword [esi + ebp*8 + 4]
cmp edx, ebx
je 0x44465e
lea esi, [esp + 8]
lea ebx, [esp + 0xc]
push esi
push ecx
push eax
push 2
push ebx
push edi
push 6
push dword [0x44f898]
push edx
mov esi, eax
call fcn.0043ff80
add esp, 0x24
mov ebx, eax
mov eax, esi
test ebx, ebx
js 0x4446e7
mov edx, dword [esp + 0x34]
test edx, edx
je 0x444673
mov ecx, dword [eax + 4]
mov dword [edx], ecx
cmp dword [esp + 0x3c], 0
je 0x4446e7
cmp dword [esp + 0x38], 0
je 0x4446de
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x444690
mov edx, ecx
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov ebp, dword [esp + 0x38]
mov edi, ebp
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, edx
not ecx
or ecx, 0xfffffffc
add ecx, edx
lea edi, [ecx + ebp]
inc edi
lea esi, [eax + ecx]
add esi, 0xd
mov ecx, edx
shr ecx, 1
and ecx, 1
mov ebp, esi
mov dword [esp + 0x14], edi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test dl, 1
je 0x4446de
and edx, 2
movzx ecx, byte [esi + edx]
mov esi, dword [esp + 0x14]
mov byte [esi + edx], cl
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x3c]
mov dword [edx], ecx
push eax
call fcn.0043daf0
add esp, 4
mov eax, ebx
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret