Function at 0x40a5c0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
sub esp, 8
test eax, eax
push edi
mov edi, dword [esp + 0x10]
jbe 0x40a803
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
push ebx
push ebp
lea edx, [edx + ecx - 1]
push esi
mov dword [esp + 0x14], edx
mov ebp, eax
jmp 0x40a5f0
mov ecx, dword [esp + 0x28]
nop
cmp ecx, 2
mov esi, dword [esp + 0x14]
jbe 0x40a60c
lea eax, [ecx - 2]
lea esp, [esp]
mov cl, byte [esi]
mov bl, byte [edi]
xor bl, cl
dec esi
dec eax
mov byte [edi], bl
jne 0x40a600
mov al, byte [edi]
mov cl, al
shr al, 1
shl cl, 7
or cl, al
movzx eax, cl
mov edx, eax
shr edx, 4
and eax, 0xf
shl edx, 4
mov dl, byte [edx + eax + 0x44fd28]
mov al, dl
shl al, 1
cmp dl, 0x80
mov byte [esp + 0x1c], al
jb 0x40a63b
xor al, 0x1b
cmp al, 0x80
mov byte [esp + 0x20], al
jae 0x40a647
shl al, 1
jmp 0x40a64b
shl al, 1
xor al, 0x1b
cmp al, 0x80
mov cl, al
jae 0x40a655
shl al, 1
jmp 0x40a659
shl al, 1
xor al, 0x1b
xor cl, byte [esp + 0x20]
mov bl, byte [esp + 0x1c]
xor cl, al
cmp dl, 0x80
mov byte [esp + 0x20], cl
mov al, bl
jb 0x40a670
xor al, 0x1b
cmp al, 0x80
mov cl, al
jae 0x40a67a
shl al, 1
jmp 0x40a67e
shl al, 1
xor al, 0x1b
cmp al, 0x80
jae 0x40a686
shl al, 1
jmp 0x40a68a
shl al, 1
xor al, 0x1b
xor cl, al
xor cl, dl
cmp dl, 0x80
mov byte [esp + 0x1c], cl
mov al, bl
jb 0x40a69b
xor al, 0x1b
cmp al, 0x80
jae 0x40a6a3
shl al, 1
jmp 0x40a6a7
shl al, 1
xor al, 0x1b
cmp al, 0x80
mov cl, al
jae 0x40a6b1
shl al, 1
jmp 0x40a6b5
shl al, 1
xor al, 0x1b
xor cl, al
xor cl, dl
cmp dl, 0x80
mov al, cl
jb 0x40a6c3
xor bl, 0x1b
mov cl, bl
cmp cl, 0x80
jae 0x40a6ce
shl cl, 1
jmp 0x40a6d3
shl cl, 1
xor cl, 0x1b
cmp cl, 0x80
jae 0x40a6dc
shl cl, 1
jmp 0x40a6e1
shl cl, 1
xor cl, 0x1b
mov bl, byte [esp + 0x1c]
xor cl, dl
mov dl, byte [esp + 0x20]
xor al, bl
xor al, dl
mov dl, byte [esi]
xor al, cl
xor al, dl
not al
mov byte [edi], al
mov al, byte [esi - 1]
mov byte [esp + 0x13], al
mov al, byte [edi]
mov cl, al
shl cl, 7
shr al, 1
or cl, al
movzx eax, cl
mov ecx, eax
shr ecx, 4
shl ecx, 4
and eax, 0xf
mov al, byte [ecx + eax + 0x44fd28]
mov cl, al
shl cl, 1
cmp al, 0x80
mov byte [esp + 0x1c], cl
jb 0x40a72f
xor cl, 0x1b
cmp cl, 0x80
mov byte [esp + 0x20], cl
jae 0x40a73c
shl cl, 1
jmp 0x40a741
shl cl, 1
xor cl, 0x1b
cmp cl, 0x80
mov dl, cl
jae 0x40a74c
shl cl, 1
jmp 0x40a751
shl cl, 1
xor cl, 0x1b
xor dl, byte [esp + 0x20]
mov bl, byte [esp + 0x1c]
xor dl, cl
cmp al, 0x80
mov byte [esp + 0x20], dl
mov cl, bl
jb 0x40a768
xor cl, 0x1b
cmp cl, 0x80
mov dl, cl
jae 0x40a773
shl cl, 1
jmp 0x40a778
shl cl, 1
xor cl, 0x1b
cmp cl, 0x80
jae 0x40a781
shl cl, 1
jmp 0x40a786
shl cl, 1
xor cl, 0x1b
xor dl, cl
xor dl, al
cmp al, 0x80
mov byte [esp + 0x1c], dl
mov cl, bl
jb 0x40a797
xor cl, 0x1b
cmp cl, 0x80
jae 0x40a7a0
shl cl, 1
jmp 0x40a7a5
shl cl, 1
xor cl, 0x1b
cmp cl, 0x80
mov dl, cl
jae 0x40a7b0
shl cl, 1
jmp 0x40a7b5
shl cl, 1
xor cl, 0x1b
xor dl, cl
xor dl, al
cmp al, 0x80
mov cl, dl
jb 0x40a7c2
xor bl, 0x1b
mov dl, bl
cmp dl, 0x80
jae 0x40a7cd
shl dl, 1
jmp 0x40a7d2
shl dl, 1
xor dl, 0x1b
cmp dl, 0x80
jae 0x40a7db
shl dl, 1
jmp 0x40a7e0
shl dl, 1
xor dl, 0x1b
mov bl, byte [esp + 0x20]
xor dl, al
xor cl, byte [esp + 0x1c]
xor cl, bl
mov bl, byte [esp + 0x13]
xor cl, dl
xor cl, bl
not cl
mov byte [edi], cl
inc edi
dec ebp
jne 0x40a5eb
pop esi
pop ebp
pop ebx
xor eax, eax
pop edi
add esp, 8
ret