Function at 0x4015d0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x34
push ebx
push esi
push edi
lea esi, [ecx + 2]
mov edi, 4
nop
mov dl, byte [esi - 2]
mov cl, byte [esi - 1]
mov al, dl
shr al, 7
movzx eax, al
imul eax, eax, 0x1b
mov byte [esp + 0x13], dl
add dl, dl
mov ch, byte [esi]
mov byte [esp + 0x12], cl
mov dh, byte [esi + 1]
xor dl, al
mov dword [esp + 0x3c], eax
mov al, dl
mov byte [esp + 0x11], ch
shr al, 7
mov bh, dl
movzx eax, al
add bh, bh
imul eax, eax, 0x1b
mov byte [esp + 0x14], dh
xor bh, al
mov dword [esp + 0x2c], eax
mov al, cl
mov byte [esp + 0x15], bh
shr al, 7
add cl, cl
movzx eax, al
imul eax, eax, 0x1b
xor cl, al
mov dword [esp + 0x20], eax
mov al, cl
mov byte [esp + 0x17], cl
shr al, 7
mov bl, cl
movzx eax, al
add bl, bl
imul eax, eax, 0x1b
mov cl, ch
add cl, cl
xor bl, al
mov dword [esp + 0x38], eax
mov al, ch
mov byte [esp + 0x16], bl
shr al, 7
movzx eax, al
imul eax, eax, 0x1b
xor cl, al
mov dword [esp + 0x28], eax
mov al, cl
mov byte [esp + 0x10], cl
shr al, 7
mov ch, cl
movzx eax, al
add ch, ch
imul eax, eax, 0x1b
mov cl, dh
add cl, cl
mov dword [esp + 0x24], eax
xor ch, al
mov al, dh
shr al, 7
movzx eax, al
imul eax, eax, 0x1b
xor cl, al
mov dword [esp + 0x34], eax
mov al, cl
mov dh, cl
shr al, 7
add dh, dh
movzx eax, al
imul eax, eax, 0x1b
xor dh, al
mov dword [esp + 0x30], eax
mov al, byte [esp + 0x10]
xor al, dl
mov byte [esp + 0xf], dh
xor al, dh
xor al, ch
xor al, bl
xor al, bh
mov byte [esp + 0x10], al
mov al, dh
shr al, 7
movzx eax, al
imul eax, eax, 0x1b
mov dword [esp + 0x18], eax
mov al, ch
shr al, 7
movzx eax, al
imul eax, eax, 0x1b
mov dword [esp + 0x1c], eax
mov al, bl
shr al, 7
movzx eax, al
imul ebx, eax, 0x1b
mov al, byte [esp + 0x15]
shr al, 7
movzx eax, al
imul edx, eax, 0x1b
mov ah, byte [esp + 0x10]
mov al, ah
xor ah, byte [esp + 0x14]
xor al, byte [esp + 0x12]
xor al, byte [esp + 0x13]
add al, al
xor ah, byte [esp + 0x11]
xor al, dl
add ah, ah
xor al, bl
xor ah, dl
xor al, byte [esp + 0x1c]
xor ah, bl
xor al, byte [esp + 0x18]
xor al, byte [esp + 0x24]
xor al, byte [esp + 0x20]
xor al, byte [esp + 0x2c]
xor al, byte [esp + 0x3c]
xor al, byte [esp + 0x14]
xor al, byte [esp + 0x11]
xor al, byte [esp + 0x12]
mov byte [esi - 2], al
mov al, byte [esp + 0xf]
xor al, cl
xor al, ch
mov ecx, dword [esp + 0x1c]
xor al, byte [esp + 0x16]
xor ah, cl
xor al, byte [esp + 0x17]
xor al, byte [esp + 0x15]
mov byte [esp + 0xf], al
xor al, byte [esp + 0x11]
xor al, byte [esp + 0x12]
add al, al
mov ch, byte [esp + 0x14]
xor al, dl
xor byte [esp + 0xf], ch
xor al, bl
mov byte [esp + 0x10], ah
xor al, cl
mov cl, byte [esp + 0x10]
xor al, byte [esp + 0x18]
xor al, byte [esp + 0x30]
xor al, byte [esp + 0x28]
xor al, byte [esp + 0x38]
xor al, byte [esp + 0x20]
xor al, byte [esp + 0x14]
xor al, byte [esp + 0x11]
xor al, byte [esp + 0x13]
mov byte [esi - 1], al
mov eax, dword [esp + 0x18]
xor cl, al
xor cl, byte [esp + 0x34]
xor cl, byte [esp + 0x24]
xor cl, byte [esp + 0x28]
xor cl, byte [esp + 0x2c]
xor cl, ch
xor cl, byte [esp + 0x12]
xor cl, byte [esp + 0x13]
mov byte [esi], cl
mov cl, byte [esp + 0x13]
xor byte [esp + 0xf], cl
shl byte [esp + 0xf], 1
lea esi, [esi + 4]
xor byte [esp + 0xf], dl
mov dl, byte [esp + 0xf]
mov ecx, dword [esp + 0x1c]
xor dl, bl
xor dl, cl
xor dl, al
xor dl, byte [esp + 0x30]
xor dl, byte [esp + 0x34]
xor dl, byte [esp + 0x38]
xor dl, byte [esp + 0x3c]
xor dl, byte [esp + 0x11]
xor dl, byte [esp + 0x12]
xor dl, byte [esp + 0x13]
mov byte [esi - 3], dl
sub edi, 1
jne 0x4015e0
pop edi
pop esi
pop ebx
add esp, 0x34
ret