Function at 0x440950
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x68
mov ebx, dword [ebp + 8]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x440970
mov esi, eax
sar esi, 1
cmp esi, 0xfffffffb
jge 0x44098b
mov eax, 0xffffffff
jmp 0x44098e
add eax, 0xa
push eax
call fcn.00408d90
add esp, 4
mov dword [eax], 0x3f005c
mov dword [eax + 4], 0x5c003f
lea ecx, [esi + 4]
mov word [eax + 8], 0
mov dword [esp + 4], eax
add eax, 8
movzx edx, word [ebx]
test dx, dx
je 0x4409d1
add ebx, 2
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ebx]
add ebx, 2
test dx, dx
jne 0x4409c0
mov word [eax], 0
mov eax, ecx
and eax, 0xfffd
and esi, 2
mov edx, esi
xor edx, 2
imul edx, eax
or ecx, 2
imul ecx, esi
lea eax, [ecx + edx]
mov word [esp + 0x14], ax
lea eax, [ecx + edx]
add eax, 2
mov word [esp + 0x16], ax
mov eax, dword [esp + 4]
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], 0x18
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], 0x40
lea eax, [esp + 0x14]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0x92919097
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov eax, 0x900a7fc2
mov dword [esp + 8], 0x900a7fc3
mov edx, 0x6ff5803c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp], edx
movzx ecx, byte [esp + eax + 0x6ff58076]
mov ebx, ecx
lea edx, [ecx + ecx]
not edx
add edx, ecx
mov dword [esp + 0x10], edx
not ecx
mov dword [esp + 0xc], eax
mov esi, ecx
and esi, 0x401000e3
and ebx, 0x1c
or ebx, esi
mov esi, ebx
xor esi, 0xbfefff1c
xor ebx, 0xe3
or ebx, ecx
lea ecx, [esi + ebx]
add esi, ebx
inc esi
lea edi, [eax + 1]
mov ebx, edi
and ebx, 0x1846
mov edx, dword [esp]
and edx, 0x60818019
or edx, ebx
xor edx, 0xf08be799
and edx, edi
mov ebx, esi
and ebx, edx
xor edx, esi
not edx
add ecx, edx
inc ecx
sub ecx, ebx
mov edx, dword [esp]
shr edx, 1
and edx, 1
mov esi, edi
and esi, 0x100a7fdd
imul esi, edx
mov eax, dword [esp + 8]
mov edx, eax
shr edx, 1
and edx, 1
mov ebx, edi
or ebx, 2
imul ebx, edx
add esi, esi
lea edx, [esi + ebx*2]
mov ebx, dword [esp + 0xc]
mov esi, ebx
sub esi, edx
and esi, dword [esp + 0x10]
mov edx, ecx
and edx, esi
add esi, ecx
add edx, edx
sub esi, edx
mov edx, dword [esp]
and esi, ecx
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x1c]
add cl, 0xab
mov byte [esp + ebx + 0x6ff58076], cl
inc eax
mov dword [esp + 8], eax
dec edx
mov eax, edi
cmp edi, 0x900a7fce
jne 0x440a70
mov esi, dword [esp + 0x38]
mov eax, dword [0x44d514]
test eax, eax
je 0x440b95
xor ecx, ecx
mov edx, dword [0x44d518]
nop
nop
nop
cmp dword [edx + ecx*8], 0xdcc9f508
je 0x440b70
inc ecx
cmp eax, ecx
jne 0x440b60
jmp 0x440b95
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x440b95
lea ecx, [esp + 0x38]
lea edx, [esp + 0x20]
push ecx
push edx
push 2
push dword [0x44d51c]
push eax
call fcn.0043d9a0
add esp, 0x14
mov esi, eax
push dword [esp + 4]
call fcn.00408da0
add esp, 4
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x440bae
mov eax, dword [esp + 0x58]
mov dword [ecx], eax
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret