Function at 0x440680
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [esp + 0x3c]
xor ecx, ecx
test eax, eax
je 0x4406cb
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 0x4406a0
lea esi, [eax + ecx]
add esi, 0xfffffffe
mov edx, eax
not edx
and edx, esi
add ecx, eax
mov esi, 1
sub esi, ecx
and esi, eax
sub edx, esi
and edx, 0xfffe
mov ecx, edx
mov word [esp + 0x18], cx
mov edx, eax
test eax, eax
je 0x4406db
add ecx, 2
mov edx, ecx
mov esi, dword [esp + 0x44]
mov word [esp + 0x1a], dx
mov dword [esp + 0x1c], eax
mov dword [esp], 0x585b5a45
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0xadfebc0f
movzx ecx, byte [esp + eax + 0x520143f1]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xb5
mov byte [esp + eax + 0x520143f1], cl
inc eax
cmp eax, 0xadfebc16
jne 0x440700
mov ebx, dword [esp]
mov eax, dword [0x44ae04]
test eax, eax
mov dword [esp + 8], esi
je 0x44077f
xor ecx, ecx
mov edx, dword [0x44ae08]
nop
cmp dword [edx + ecx*8], 0xc0a4c970
je 0x440750
inc ecx
cmp eax, ecx
jne 0x440740
jmp 0x44077f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x44077f
lea ecx, [esp + 0xc]
lea edx, [esp + 0x18]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x4c]
push 6
push eax
push dword [0x44ae0c]
call fcn.0043bd80
add esp, 0x24
mov ebx, eax
mov dword [esp], 0x89cacb11
mov eax, 0x32
mov ecx, 0xf854d3cc
movzx edi, byte [esp + eax - 0x32]
lea ebp, [eax - 0x7c2a69ff]
mov esi, ecx
and esi, edi
lea edx, [edi + edi]
not edx
add edx, edi
and edx, ebp
or edx, esi
inc dl
mov byte [esp + eax - 0x32], dl
inc eax
dec ecx
cmp eax, 0x36
jne 0x440790
cmp ebx, dword [esp]
jne 0x44097d
push dword [esp + 0xc]
call fcn.004389f0
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], 0x393a3b32
mov dword [esp + 0x14], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx + 0x10]
mov ebp, 0x1a0a5ff4
sub ebp, edx
mov ebx, ebp
xor ebx, edi
mov ecx, 0xf4
sub ecx, edx
and ecx, edi
not edi
and edi, ebp
add ebx, ebp
not ebx
add ebx, edi
or ebx, ecx
add bl, 0xc9
mov byte [esp + edx + 0x10], bl
mov ecx, edx
xor ecx, 0xfffffffe
mov ebx, edx
or ebx, 1
and ebx, ecx
mov ecx, ebx
and ecx, 5
mov esi, ebx
and esi, 2
or ebx, 2
imul ebx, esi
xor esi, 2
imul esi, ecx
xor edx, 1
add edx, ebx
add edx, esi
cmp edx, 8
jb 0x4407f0
mov esi, dword [esp + 0x10]
mov dword [esp], 0x585b5a45
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov ebx, 0xadfebc0f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ebx + 0x520143f1]
mov ecx, edx
and ecx, ebx
add cl, cl
sub dl, cl
movzx ecx, dl
add ecx, ebx
add cl, 0xb5
mov byte [esp + ebx + 0x520143f1], cl
inc ebx
cmp ebx, 0xadfebc16
jne 0x440870
mov ebx, dword [esp]
mov ebp, dword [0x44ae04]
test ebp, ebp
je 0x4408f3
xor edi, edi
mov ecx, dword [0x44ae08]
nop
nop
nop
cmp dword [ecx + edi*8], 0xc0a4c970
je 0x4408c0
inc edi
cmp ebp, edi
jne 0x4408b0
jmp 0x4408f3
mov ebp, dword [ecx + edi*8 + 4]
cmp ebp, ebx
je 0x4408f3
lea ecx, [esp + 0xc]
lea edx, [esp + 0x18]
push ecx
push dword [esp + 0x24]
push eax
push esi
push edx
push dword [esp + 0x4c]
push 6
push ebp
push dword [0x44ae0c]
mov edi, eax
call fcn.0043bd80
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
mov edx, dword [esp + 0x44]
js 0x440974
mov esi, dword [esp + 0x40]
test esi, esi
je 0x440908
mov ecx, dword [eax + 4]
mov dword [esi], ecx
cmp dword [esp + 0x48], 0
je 0x440974
test edx, edx
je 0x44096b
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x440922
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 0x44096b
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.00438a60
add esp, 4
mov eax, ebx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret