Function at 0x444670
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x38]
xor ecx, ecx
test eax, eax
je 0x4446a3
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 0x444690
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 0x14], cx
mov edx, eax
test eax, eax
je 0x4446b3
add ecx, 2
mov edx, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 8], ecx
mov word [esp + 0x16], dx
mov dword [esp + 0x18], eax
mov dword [esp], 0x787b7a05
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0x6ce591bf
xor ecx, ecx
nop
nop
movzx edx, byte [esp + eax - 0x6ce591bf]
mov edi, ecx
and edi, 7
mov ebx, eax
and ebx, 0x78
or ebx, edi
xor ebx, 0x78
lea edi, [ecx + 0x40]
and edi, ebx
mov ebx, eax
or ebx, edx
not edx
or edx, edi
and edx, ebx
add dl, 0x45
mov byte [esp + eax - 0x6ce591bf], dl
inc eax
dec ecx
cmp eax, 0x6ce591c6
jne 0x4446e0
mov ebx, dword [esp]
mov eax, dword [0x44f228]
test eax, eax
je 0x44476f
xor ecx, ecx
mov edx, dword [0x44f22c]
nop
nop
nop
cmp dword [edx + ecx*8], 0xc0a4c970
je 0x444740
inc ecx
cmp eax, ecx
jne 0x444730
jmp 0x44476f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x44476f
lea ecx, [esp + 0xc]
lea edx, [esp + 0x14]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x48]
push 6
push dword [0x44f230]
push eax
call fcn.004400f0
add esp, 0x24
mov ebx, eax
mov dword [esp], 0x99dadb21
mov eax, 0x2b76d4af
mov esi, 0xd4892b50
movzx edx, byte [esp + eax - 0x2b76d4af]
mov edi, edx
not edi
mov ebp, eax
and ebp, edi
and edi, esi
mov ecx, esi
xor ecx, edx
sub edx, ecx
add edx, edi
or edx, ebp
add dl, 0x95
mov byte [esp + eax - 0x2b76d4af], dl
inc eax
dec esi
cmp eax, 0x2b76d4b3
jne 0x444780
cmp ebx, dword [esp]
jne 0x44496e
push dword [esp + 0xc]
call fcn.0043d5c0
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x10], 0xd7d6c9c6
lea edx, [esp + 0x10]
mov ebx, 0x3475aed1
nop
nop
nop
movzx ebp, byte [edx]
lea ecx, [ebp*2]
not ecx
add ecx, ebp
lea edi, [ebx - 0x3475ae00]
and edi, ebp
not ebp
or ecx, ebp
not ecx
and ecx, 0x3f
or ecx, ebx
lea ebp, [ecx + ecx]
not ebp
add ebp, ecx
mov esi, ecx
and esi, 0xc3
and ebp, 0x3c
or ebp, esi
xor ebp, edi
xor ebp, 0xc3
not ecx
and ecx, edi
or ecx, ebp
add cl, 0x1a
mov byte [edx], cl
inc edx
dec ebx
cmp ebx, 0x3475aecd
jne 0x4447e0
mov edi, dword [esp + 0x10]
mov dword [esp], 0x787b7a05
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov ecx, 0x6ce591bf
xor ebx, ebx
movzx edx, byte [esp + ecx - 0x6ce591bf]
mov esi, ebx
and esi, 7
mov ebp, ecx
and ebp, 0x78
or ebp, esi
xor ebp, 0x78
lea esi, [ebx + 0x40]
and esi, ebp
mov ebp, ecx
or ebp, edx
not edx
or edx, esi
and edx, ebp
add dl, 0x45
mov byte [esp + ecx - 0x6ce591bf], dl
inc ecx
dec ebx
cmp ecx, 0x6ce591c6
jne 0x444850
mov ebx, dword [esp]
mov ecx, dword [0x44f228]
test ecx, ecx
je 0x4448e4
xor edx, edx
mov ebp, dword [0x44f22c]
nop
cmp dword [ebp + edx*8], 0xc0a4c970
je 0x4448b1
inc edx
cmp ecx, edx
jne 0x4448a0
jmp 0x4448e4
mov ecx, dword [ebp + edx*8 + 4]
cmp ecx, ebx
je 0x4448e4
lea edx, [esp + 0xc]
lea esi, [esp + 0x14]
push edx
push dword [esp + 0x20]
push eax
push edi
push esi
push dword [esp + 0x48]
push 6
push dword [0x44f230]
push ecx
mov edi, eax
call fcn.004400f0
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
mov edx, dword [esp + 0x40]
js 0x444965
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x4448f9
mov ecx, dword [eax + 4]
mov dword [esi], ecx
cmp dword [esp + 0x44], 0
je 0x444965
test edx, edx
je 0x44495c
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x444913
mov edx, ecx
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, dword [esp + 0x40]
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, edx
and ecx, 0xfffffffc
add dword [esp + 8], ecx
lea ebp, [eax + ecx]
add ebp, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov esi, ebp
mov edi, dword [esp + 8]
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, dword [esp + 8]
test dl, 1
je 0x44495c
and edx, 2
movzx ecx, byte [ebp + edx]
mov byte [esi + edx], cl
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x44]
mov dword [edx], ecx
push eax
call fcn.0043d610
add esp, 4
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret