Function at 0x4445f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x38
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0xc]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x444610
sar ecx, 1
mov esi, ecx
and esi, 2
mov edx, ecx
or ecx, 2
imul ecx, esi
xor esi, 2
and edx, 0xfffd
imul edx, esi
lea esi, [edx + ecx]
mov word [esp + 0x28], si
add ecx, edx
add ecx, 2
mov word [esp + 0x2a], cx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x10], 0xd2d1d0d7
mov dword [esp + 0x14], 0
mov byte [esp + 0x18], 0
mov eax, 0x4dcce63
mov edi, 0xfb23319c
nop
nop
nop
nop
nop
mov dword [esp + 4], edi
movzx edx, byte [esp + eax - 0x4dcce53]
mov edi, edx
not edi
mov ebx, edi
and ebx, 0x498e514
mov esi, edx
and esi, 0xffffffeb
or esi, ebx
mov ebx, esi
xor ebx, 0x3671aeb
xor esi, 0x498e514
mov ecx, esi
xor edi, esi
add esi, ebx
add esi, edi
mov edi, dword [esp + 4]
and ecx, edx
sub esi, ecx
inc esi
or esi, edi
add esi, 0x8000000
or edx, eax
and edx, esi
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0xc]
add cl, 0x4b
mov byte [esp + eax - 0x4dcce53], cl
inc eax
dec edi
cmp eax, 0x4dcce6c
jne 0x444670
mov eax, dword [esp + 0x10]
mov esi, dword [0x44fb4c]
test esi, esi
je 0x44472c
xor ecx, ecx
mov edx, dword [0x44fb50]
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xd07a397f
je 0x444700
inc ecx
cmp esi, ecx
jne 0x4446f0
jmp 0x44472c
mov esi, dword [edx + ecx*8 + 4]
cmp esi, eax
je 0x44472c
lea ecx, [esp + 0x24]
lea edx, [esp + 0x28]
push ecx
push 0
push 0
push 2
push edx
push dword [ebp + 8]
push 6
push dword [0x44fb54]
push esi
call fcn.00440280
add esp, 0x24
mov dword [esp + 4], eax
mov dword [esp + 0x10], 0xcb0a0d63
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x10]
mov esi, eax
xor esi, 0x669056aa
mov edi, eax
xor edi, 0x996fa955
mov edx, eax
or edx, 0xa
and edx, edi
mov ebx, eax
and ebx, 2
mov edi, edx
or edx, 2
imul edx, ebx
xor ebx, 2
and edi, 0xd
imul edi, ebx
add edi, esi
add edx, edi
mov edi, ecx
not edi
mov ebx, edi
and ebx, 0x7fa39a55
mov esi, ecx
and esi, 0xffffffaa
or esi, ebx
xor esi, 0x5064aa
and esi, edi
mov edi, esi
xor edi, 0xc04f6db4
or esi, 0xbfbc934b
and esi, edi
and ecx, 0xffffffb4
or ecx, esi
xor ecx, edx
xor ecx, 0xbfbc934b
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x5a
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x10
jne 0x444760
mov edi, dword [esp + 4]
cmp edi, dword [esp + 0x10]
jne 0x444990
push dword [esp + 0x24]
call fcn.0043e5e0
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], 0xd2d1d0d7
mov dword [esp + 0x14], 0
mov byte [esp + 0x18], 0
mov ecx, 0x4dcce63
mov edx, 0xfb23319c
nop
nop
nop
nop
mov dword [esp + 4], edx
movzx eax, byte [esp + ecx - 0x4dcce53]
mov edi, eax
not edi
mov esi, edi
and esi, 0x498e514
mov ebx, eax
and ebx, 0xffffffeb
or ebx, esi
mov esi, ebx
xor esi, 0x3671aeb
xor ebx, 0x498e514
mov edx, ebx
xor edi, ebx
add ebx, esi
add ebx, edi
and edx, eax
sub ebx, edx
mov edx, dword [esp + 4]
inc ebx
or ebx, edx
add ebx, 0x8000000
or eax, ecx
and eax, ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x4b
mov byte [esp + ecx - 0x4dcce53], al
inc ecx
dec edx
cmp ecx, 0x4dcce6c
jne 0x444830
mov edi, dword [esp + 0x10]
mov eax, dword [0x44fb4c]
test eax, eax
je 0x4448c0
xor ecx, ecx
mov edx, dword [0x44fb50]
mov ebx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x14]
cmp dword [edx + ecx*8], 0xd07a397f
je 0x4448c8
inc ecx
cmp eax, ecx
jne 0x4448b0
jmp 0x4448fa
mov ebx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x14]
jmp 0x4448fa
mov eax, dword [edx + ecx*8 + 4]
cmp eax, edi
je 0x4448fa
lea ecx, [esp + 0x24]
lea edx, [esp + 0x28]
push ecx
push dword [esp + 0x34]
push dword [esp + 0x10]
push 2
push edx
push dword [ebp + 8]
push 6
push dword [0x44fb54]
push eax
call fcn.00440280
add esp, 0x24
mov edi, eax
test edi, edi
js 0x444984
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x444912
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
mov dword [ecx], eax
test ebx, ebx
je 0x444984
test esi, esi
je 0x44497b
mov dword [esp + 4], edi
mov eax, dword [ebx]
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 8]
cmp eax, ecx
jb 0x44492d
mov eax, ecx
mov esi, dword [esp + 8]
lea edx, [esi + 0xc]
mov ecx, eax
shr ecx, 2
mov edi, dword [ebp + 0x14]
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, eax
and ecx, 0xfffffffc
add dword [esp + 0x20], ecx
lea edx, [esi + ecx]
add edx, 0xc
mov ecx, eax
shr ecx, 1
and ecx, 1
mov esi, edx
mov edi, dword [esp + 0x20]
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, dword [esp + 0x20]
test al, 1
mov edi, dword [esp + 4]
je 0x44497b
and eax, 2
movzx ecx, byte [edx + eax]
mov byte [esi + eax], cl
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov dword [ebx], eax
push dword [esp + 8]
call fcn.0043e740
add esp, 4
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret