Function at 0x406550
Capabilities:
Encode data using xor

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