Function at 0x440420
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x44046a
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 0x440440
sar ecx, 1
mov edx, ecx
or edx, 2
mov esi, ecx
and esi, 2
imul edx, esi
xor esi, 2
and ecx, 0xfffd
imul ecx, esi
add ecx, edx
jmp 0x44046c
xor ecx, ecx
mov word [esp + 0x18], cx
mov edx, eax
test eax, eax
je 0x44047c
add ecx, 2
mov edx, ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 8], ecx
mov word [esp + 0x1a], dx
mov dword [esp + 0x1c], eax
mov dword [esp], 0x101f1e1d
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax]
lea ecx, [eax + 0xb2371c5]
lea edi, [eax + 0xc5]
and edi, edx
or ecx, edx
xor ecx, edi
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0x26
mov byte [esp + eax], cl
mov ecx, eax
and ecx, 5
xor eax, 0x26208d95
lea eax, [eax + ecx*2]
add eax, 0xd9df726c
cmp eax, 7
jb 0x4404b0
mov ebx, dword [esp]
mov eax, dword [0x44bcdc]
test eax, eax
je 0x44054f
xor ecx, ecx
mov edx, dword [0x44bce0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x877f203a
je 0x440520
inc ecx
cmp eax, ecx
jne 0x440510
jmp 0x44054f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x44054f
lea ecx, [esp + 0xc]
lea edx, [esp + 0x18]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x4c]
push 0x18
push eax
push dword [0x44bce4]
call fcn.0043cba0
add esp, 0x24
mov ebx, eax
mov dword [esp], 0x11cecfe9
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0xb486034d
mov ecx, 0xb2
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x4b79fcb3]
mov ebp, edx
not ebp
or ebp, ecx
mov edi, ebp
not edi
and ebp, 2
mov esi, edi
and esi, 0x5d
imul esi, ebp
mov ebp, edi
and ebp, 2
or edi, 2
imul edi, ebp
sub edx, esi
sub edx, edi
add edx, eax
mov esi, edx
and esi, 0x7e
xor edx, 0x7e
lea edx, [edx + esi*2]
inc dl
mov byte [esp + eax + 0x4b79fcb3], dl
inc eax
dec ecx
cmp eax, 0xb4860354
jne 0x440570
cmp ebx, dword [esp]
jne 0x44079d
push dword [esp + 0xc]
call fcn.0043a220
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], 0x919e9f9e
mov dword [esp + 0x14], 0
mov ebp, 0x41e1b3a5
mov ebx, 0x7e1e4c5a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebp - 0x41e1b395]
mov esi, ebx
and esi, 0x261c0469
mov edi, ebp
xor edi, 0x665c96e9
mov edx, ebp
or edx, 0x1a12106
and edx, edi
or edx, esi
xor edx, ecx
xor edx, 0x665c96e9
mov ecx, edx
and ecx, 1
or edx, 1
add edx, ecx
add dl, 0xc6
mov byte [esp + ebp - 0x41e1b395], dl
inc ebp
dec ebx
cmp ebp, 0x41e1b3ad
jne 0x440600
mov edx, dword [esp + 0x10]
mov dword [esp], 0x101f1e1d
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ebx]
lea ecx, [ebx + 0xb2371c5]
lea edi, [ebx + 0xc5]
and edi, esi
or ecx, esi
xor ecx, edi
mov esi, ecx
and esi, 1
or ecx, 1
add ecx, esi
add cl, 0x26
mov byte [esp + ebx], cl
mov ecx, ebx
and ecx, 5
xor ebx, 0x26208d95
lea ebx, [ebx + ecx*2]
add ebx, 0xd9df726c
cmp ebx, 7
jb 0x440670
mov ebx, dword [esp]
mov ecx, dword [0x44bcdc]
test ecx, ecx
je 0x440713
xor ebp, ebp
mov edi, dword [0x44bce0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebp*8], 0x877f203a
je 0x4406e0
inc ebp
cmp ecx, ebp
jne 0x4406d0
jmp 0x440713
mov ebp, dword [edi + ebp*8 + 4]
cmp ebp, ebx
je 0x440713
lea ecx, [esp + 0xc]
lea esi, [esp + 0x18]
push ecx
push dword [esp + 0x24]
push eax
push edx
push esi
push dword [esp + 0x4c]
push 0x18
push ebp
push dword [0x44bce4]
mov edi, eax
call fcn.0043cba0
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
mov edx, dword [esp + 0x44]
js 0x440794
mov esi, dword [esp + 0x40]
test esi, esi
je 0x440728
mov ecx, dword [eax + 4]
mov dword [esi], ecx
cmp dword [esp + 0x48], 0
je 0x440794
test edx, edx
je 0x44078b
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x440742
mov edx, ecx
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, dword [esp + 0x44]
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 0x44078b
and edx, 2
movzx ecx, byte [ebp + edx]
mov byte [esi + edx], cl
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x48]
mov dword [edx], ecx
push eax
call fcn.0043a2b0
add esp, 4
mov eax, ebx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret