Function at 0x444f40
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
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 0x444f60
sar ecx, 1
mov edx, ecx
and edx, 0xfffd
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
xor edi, 2
imul edi, edx
lea edx, [edi + ecx]
mov word [esp + 0x14], dx
add ecx, edi
add ecx, 2
mov word [esp + 0x16], cx
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0x5c5d5e5f
mov byte [esp + 8], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x44500d
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 4]
lea edx, [eax + eax]
and edx, 0x1fb96ce0
mov edi, eax
sub edi, edx
mov edx, eax
xor edx, 0x7023498f
or eax, 0xfdcb670
and eax, edx
lea eax, [edi + eax*2]
add eax, 0xfdcb670
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xd0
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x444fc0
mov ebx, dword [esp + 4]
mov eax, dword [0x4506dc]
test eax, eax
je 0x44506f
xor ecx, ecx
mov edx, dword [0x4506e0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xf81c0144
je 0x445040
inc ecx
cmp eax, ecx
jne 0x445030
jmp 0x44506f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x44506f
lea ecx, [esp + 0x10]
lea edx, [esp + 0x14]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x48]
push 6
push dword [0x4506e4]
push eax
call fcn.00440260
add esp, 0x24
mov ebx, eax
mov dword [esp + 4], 0xf4e496f
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x4450e7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 4]
lea ecx, [eax + 0x92]
and ecx, edx
add eax, edx
sub eax, ecx
mov edx, 0x3f70606d
sub edx, eax
add eax, 0xfc81ae92
and edx, ecx
not ecx
and ecx, eax
sub ecx, edx
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0xc]
add al, 0x26
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x4450a0
cmp ebx, dword [esp + 4]
jne 0x445252
push dword [esp + 0x10]
call fcn.0043d3b0
add esp, 4
mov ecx, dword [esp + 0x10]
mov dword [esp + 4], 0x5c5d5e5f
mov byte [esp + 8], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 4
ja 0x445170
nop
nop
nop
mov edx, dword [esp]
mov edi, dword [esp]
movzx edi, byte [esp + edi + 4]
lea ebx, [edx + edx]
and ebx, 0x1fb96ce0
mov ebp, edx
sub ebp, ebx
mov ebx, edx
xor ebx, 0x7023498f
or edx, 0xfdcb670
and edx, ebx
lea edx, [edx*2 + 0xfdcb670]
add edx, ebp
xor edx, edi
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xc]
add dl, 0xd0
mov edi, dword [esp]
mov byte [esp + edi + 4], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 5
jb 0x445120
mov ebx, dword [esp + 4]
mov edx, dword [0x4506dc]
test edx, edx
je 0x4451d1
xor ebp, ebp
mov edi, dword [0x4506e0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebp*8], 0xf81c0144
je 0x4451a0
inc ebp
cmp edx, ebp
jne 0x445190
jmp 0x4451d1
mov edx, dword [edi + ebp*8 + 4]
cmp edx, ebx
je 0x4451d1
lea edi, [esp + 0x10]
lea ebx, [esp + 0x14]
push edi
push ecx
push eax
push 2
push ebx
push dword [esp + 0x48]
push 6
push dword [0x4506e4]
push edx
mov edi, eax
call fcn.00440260
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
js 0x445249
test esi, esi
je 0x4451de
mov ecx, dword [eax + 4]
mov dword [esi], ecx
cmp dword [esp + 0x44], 0
je 0x445249
mov esi, dword [esp + 0x40]
test esi, esi
je 0x445240
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x4451fc
mov edx, ecx
lea ebp, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, esi
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
mov ecx, edx
and ecx, 0xfffffffc
add esi, ecx
lea ebp, [eax + ecx]
add ebp, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 0x1c], ebp
mov edi, esi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test dl, 1
je 0x445240
and edx, 2
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [ecx + edx]
mov byte [esi + edx], cl
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x44]
mov dword [edx], ecx
push eax
call fcn.0043d440
add esp, 4
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret