Function at 0x40ac6d
Capabilities:
Encode data using xor

Disassembly:
inc eax
push ebx
dec eax
sub esp, 0x10
movups xmm0, xmmword [ecx]
dec eax
mov dword [esp + 0x28], edx
push edx
pop ecx
inc esp
mov eax, dword [esp + 0x2c]
inc ebp
sub edx, edx
movups xmmword [esp], xmm0
mov edx, dword [esp + 0xc]
inc esp
mov ebx, dword [esp + 8]
mov ebx, dword [esp + 4]
inc esp
mov ecx, dword [esp]
push edx
pop eax
ror ecx, 8
inc ecx
add ecx, eax
mov edx, ebx
inc ecx
xor ecx, ecx
ror edx, 8
inc ecx
add edx, ecx
inc ecx
rol eax, 3
inc ecx
sub edx, edx
inc ecx
rol ecx, 3
inc esp
xor ecx, edx
inc esp
xor eax, ecx
inc ecx
inc edx
inc ecx
push ebx
pop ebx
inc esp
push eax
pop ebx
inc ecx
cmp edx, 0x1b
jb 0x40ac9a
mov dword [esp + 0x28], ecx
inc esp
mov dword [esp + 0x2c], eax
dec eax
mov eax, dword [esp + 0x28]
dec eax
add esp, 0x10
pop ebx
ret

Function at 0x40ace1
Capabilities:
Encode data using xor
Encrypt data using chaskey

Disassembly:
inc ebp
or ecx, ecx
je 0x40ae2f
dec eax
mov dword [esp + 8], ebx
dec eax
mov dword [esp + 0x10], esi
dec eax
mov dword [esp + 0x18], edi
push ebp
inc ecx
push esp
inc ecx
push esi
dec eax
mov ebp, esp
dec eax
sub esp, 0x10
dec esp
push ecx
pop ebx
dec eax
lea eax, [ebp - 0x10]
dec esp
sub ebx, eax
dec esp
lea esi, [edx + 0xf]
dec ecx
mov edi, eax
inc ecx
mov esp, 0x10
dec eax
lea eax, [ebp - 0x10]
dec ecx
cmp eax, esi
ja 0x40ad38
dec eax
lea eax, [ebp - 1]
dec eax
cmp eax, edx
jb 0x40ad38
movups xmm0, xmmword [edx]
movdqu xmmword [ebp - 0x10], xmm0
jmp 0x40ad40
movups xmm0, xmmword [edx]
movdqu xmmword [ebp - 0x10], xmm0
dec eax
lea ecx, [ebp - 0x10]
inc ecx
push 4
pop eax
pushal
popal
inc ecx
mov eax, dword [ebx + ecx]
xor dword [ecx], eax
dec eax
lea ecx, [ecx + 4]
dec ecx
sub eax, 1
jne 0x40ad4a
inc esp
mov eax, dword [ebp - 4]
dec ecx
push esp
pop ebx
mov eax, dword [ebp - 8]
inc esp
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
inc ecx
add ecx, edx
inc ecx
add eax, eax
inc ecx
rol edx, 5
inc esp
xor edx, ecx
inc ecx
rol eax, 8
inc esp
xor eax, eax
rol ecx, 0x10
inc ecx
add eax, edx
inc ecx
add ecx, eax
inc ecx
rol edx, 7
inc ecx
rol eax, 0xd
inc esp
xor edx, eax
inc esp
xor eax, ecx
rol eax, 0x10
dec eax
sub ebx, 1
jne 0x40ad6b
inc esp
mov dword [ebp - 4], eax
inc esp
lea eax, [ebx + 4]
mov dword [ebp - 0x10], ecx
dec eax
lea ecx, [ebp - 0x10]
inc esp
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], eax
inc edx
mov eax, dword [ecx + ebx]
xor dword [ecx], eax
dec eax
lea ecx, [ecx + 4]
dec ecx
sub eax, 1
jne 0x40adb5
inc ebp
cmp ecx, esp
inc ecx
push ecx
pop ecx
inc ecx
cmova ecx, esp
inc esp
mov edx, ecx
test ecx, ecx
je 0x40adf3
dec eax
lea ebx, [ebp - 0x10]
dec esp
mov eax, edi
dec eax
sub ebx, edi
inc ecx
push edx
pop esi
inc edx
mov al, byte [ebx + eax]
inc ecx
xor byte [eax], al
dec ecx
inc eax
dec eax
sub esi, 1
jne 0x40ade3
inc esp
xor ecx, ecx
inc ebp
push esp
pop eax
dec ecx
add edi, edx
inc ecx
lea eax, [eax - 1]
add byte [eax + edx], 1
jne 0x40ae0e
inc ecx
dec eax
inc ebp
or eax, eax
jg 0x40adfc
inc ebp
test ecx, ecx
jne 0x40ad1c
dec eax
mov ebx, dword [esp + 0x30]
dec eax
mov esi, dword [esp + 0x38]
dec eax
mov edi, dword [esp + 0x40]
dec eax
add esp, 0x10
inc ecx
pop esi
inc ecx
pop esp
pop ebp
ret