Function at 0x440800
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x20
mov dword [esp + 0xc], ecx
cmp dword [ecx + 8], 0
je 0x4408ad
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
test ecx, ecx
je 0x4408ad
mov edi, dword [ebp + 0x10]
mov dword [esp + 4], 0x282b2a25
mov word [esp + 8], 0
mov eax, 0xa8ea1737
nop
movzx edx, byte [esp + eax + 0x5715e8cd]
mov ebx, edx
and ebx, eax
add bl, bl
sub dl, bl
movzx edx, dl
add edx, eax
add dl, 0xed
mov byte [esp + eax + 0x5715e8cd], dl
inc eax
cmp eax, 0xa8ea173d
jne 0x440840
mov eax, dword [esp + 4]
mov ebx, dword [0x453040]
test ebx, ebx
je 0x440910
xor edi, edi
mov esi, dword [0x453044]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edi*8], 0xdef797a3
je 0x4408f0
mov edx, edi
and edx, 1
xor edi, 1
lea edi, [edi + edx*2]
cmp edi, ebx
jb 0x440890
mov edi, dword [ebp + 0x10]
jmp 0x440910
mov dword [esp + 4], 0xf18e8f84
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
xor eax, eax
mov cl, 0x22
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 4]
xor dl, cl
mov ch, 0xae
sub ch, dl
mov byte [esp + eax + 4], ch
inc eax
dec cl
cmp eax, 7
jne 0x4408d0
mov eax, dword [esp + 4]
jmp 0x440a88
mov esi, dword [esi + edi*8 + 4]
cmp esi, eax
mov edi, dword [ebp + 0x10]
je 0x440910
push dword [ebp + 8]
push ecx
push 2
push dword [0x453048]
push esi
call fcn.00443090
add esp, 0x14
mov esi, dword [ebp + 0xc]
cmp esi, 1
mov ecx, edi
sbb ecx, 0
jl 0x4409e1
cmp eax, 0xc000010a
jne 0x4409e1
mov ecx, 0xffffd8f0
mov eax, esi
mul ecx
sub edx, esi
imul ecx, edi, 0xffffd8f0
add ecx, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0xc]
mov edx, dword [eax]
mov dword [esp + 4], 0x282b2a25
mov word [esp + 8], 0
mov eax, 0xa8ea1737
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x5715e8cd]
mov ecx, ebx
and ecx, eax
add cl, cl
sub bl, cl
movzx ecx, bl
add ecx, eax
add cl, 0xed
mov byte [esp + eax + 0x5715e8cd], cl
inc eax
cmp eax, 0xa8ea173d
jne 0x440970
mov eax, dword [esp + 4]
mov esi, dword [0x453040]
test esi, esi
je 0x4409e1
xor edi, edi
mov ebx, dword [0x453044]
nop
nop
nop
cmp dword [ebx + edi*8], 0x53f09cfa
je 0x4409c0
inc edi
cmp esi, edi
jne 0x4409b0
jmp 0x4409e1
mov esi, dword [ebx + edi*8 + 4]
cmp esi, eax
je 0x4409e1
lea eax, [esp + 0x10]
push eax
push 0
push edx
push 3
push dword [0x453048]
push esi
call fcn.00443090
add esp, 0x18
test eax, eax
js 0x440a88
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx]
test edx, edx
je 0x440a88
mov dword [esp + 4], 0x282b2a25
mov word [esp + 8], 0
mov esi, 0xa8ea1737
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi + 0x5715e8cd]
mov ecx, ebx
and ecx, esi
add cl, cl
sub bl, cl
movzx ecx, bl
add ecx, esi
add cl, 0xed
mov byte [esp + esi + 0x5715e8cd], cl
inc esi
cmp esi, 0xa8ea173d
jne 0x440a10
mov esi, dword [0x453040]
test esi, esi
je 0x440a7e
mov ecx, dword [esp + 4]
xor ebx, ebx
mov edi, dword [0x453044]
nop
nop
cmp dword [edi + ebx*8], 0x7e776f1
je 0x440a60
inc ebx
cmp esi, ebx
jne 0x440a50
jmp 0x440a7e
mov esi, dword [edi + ebx*8 + 4]
cmp esi, ecx
je 0x440a7e
push edx
push 1
push dword [0x453048]
push esi
mov edi, eax
call fcn.00443090
mov eax, edi
add esp, 0x10
mov ecx, dword [esp + 0xc]
mov dword [ecx], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc