Function at 0x404bc4
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 8]
mov dl, byte [esi + 1]
push edi
movzx edi, byte [eax]
mov ecx, edi
shl ecx, 4
lea eax, [eax + ecx + 8]
sub dl, byte [eax - 6]
mov cl, byte [eax - 7]
mov byte [ebp - 4], dl
mov dl, byte [esi + 2]
sub dl, byte [eax - 5]
mov bl, byte [eax - 3]
xor cl, byte [esi]
xor bl, byte [esi + 4]
mov byte [ebp + 0xf], dl
mov dl, byte [eax - 4]
xor dl, byte [esi + 3]
mov byte [ebp - 2], cl
mov byte [ebp + 0xb], dl
mov dl, byte [esi + 5]
sub dl, byte [eax - 2]
mov byte [ebp - 1], dl
mov dl, byte [esi + 6]
sub dl, byte [eax - 1]
mov byte [ebp - 5], dl
mov dl, byte [esi + 7]
xor dl, byte [eax]
sub eax, 8
test edi, edi
mov byte [ebp - 3], dl
je 0x404d8d
mov dword [ebp - 0xc], edi
mov edi, 0xff
mov dl, byte [ebp + 0xf]
mov cl, byte [ebp - 4]
sub byte [ebp - 2], cl
sub cl, byte [ebp - 2]
mov byte [ebp + 0xf], bl
mov bl, byte [ebp - 1]
mov byte [ebp - 6], bl
mov bl, byte [ebp + 0xb]
mov byte [ebp - 1], bl
sub dl, byte [ebp - 1]
mov bl, byte [ebp - 5]
sub byte [ebp - 1], dl
mov byte [ebp - 4], dl
mov dl, byte [ebp - 6]
sub byte [ebp + 0xf], dl
sub dl, byte [ebp + 0xf]
mov byte [ebp + 0xb], bl
mov byte [ebp - 5], dl
mov dl, byte [ebp - 3]
sub byte [ebp + 0xb], dl
mov dl, byte [ebp + 0xb]
sub byte [ebp - 3], dl
mov dl, byte [ebp + 0xf]
sub byte [ebp - 2], dl
mov dl, byte [ebp - 2]
sub byte [ebp + 0xf], dl
mov dl, byte [ebp + 0xb]
sub byte [ebp - 4], dl
mov dl, byte [ebp - 4]
sub byte [ebp + 0xb], dl
mov dl, byte [ebp - 3]
sub byte [ebp - 1], dl
sub cl, byte [ebp - 5]
mov dl, byte [ebp - 1]
sub byte [ebp - 3], dl
sub byte [ebp - 5], cl
mov dl, byte [ebp - 4]
sub byte [ebp - 2], dl
mov dl, byte [ebp + 0xb]
sub byte [ebp + 0xf], dl
mov dl, byte [ebp - 5]
sub dl, byte [ebp - 3]
xor ebx, ebx
mov bl, byte [ebp - 3]
sub bl, dl
mov byte [ebp - 5], dl
xor edx, edx
mov dl, byte [eax]
sub cl, byte [ebp - 1]
sub ebx, edx
and ebx, edi
mov dl, byte [ebx + 0x4072e0]
xor dl, byte [eax - 8]
movzx ebx, byte [ebp - 5]
mov byte [ebp - 3], dl
movzx edx, byte [eax - 1]
xor edx, ebx
mov dl, byte [edx + 0x4071e0]
sub dl, byte [eax - 9]
movzx ebx, byte [eax - 2]
mov byte [ebp - 5], dl
mov dl, byte [ebp - 1]
sub dl, cl
movzx edx, dl
xor edx, ebx
mov dl, byte [edx + 0x4071e0]
sub dl, byte [eax - 0xa]
mov byte [ebp - 1], dl
xor edx, edx
mov dl, byte [eax - 3]
sub ecx, edx
and ecx, edi
mov bl, byte [ecx + 0x4072e0]
xor bl, byte [eax - 0xb]
xor ecx, ecx
mov cl, byte [ebp + 0xb]
sub cl, byte [ebp + 0xf]
xor edx, edx
mov dl, byte [eax - 4]
sub ecx, edx
and ecx, edi
mov cl, byte [ecx + 0x4072e0]
xor cl, byte [eax - 0xc]
movzx edx, byte [ebp + 0xf]
mov byte [ebp + 0xb], cl
movzx ecx, byte [eax - 5]
xor ecx, edx
mov cl, byte [ecx + 0x4071e0]
sub cl, byte [eax - 0xd]
movzx edx, byte [eax - 6]
mov byte [ebp + 0xf], cl
mov cl, byte [ebp - 4]
sub cl, byte [ebp - 2]
sub eax, 0x10
movzx ecx, cl
xor ecx, edx
mov cl, byte [ecx + 0x4071e0]
sub cl, byte [eax + 2]
xor edx, edx
mov dl, byte [ebp - 2]
mov byte [ebp - 4], cl
xor ecx, ecx
mov cl, byte [eax + 9]
sub edx, ecx
and edx, edi
mov cl, byte [edx + 0x4072e0]
xor cl, byte [eax + 1]
dec dword [ebp - 0xc]
mov byte [ebp - 2], cl
jne 0x404c35
mov dl, byte [ebp - 3]
mov al, byte [ebp - 4]
mov byte [esi + 1], al
mov al, byte [ebp + 0xf]
mov byte [esi + 2], al
mov al, byte [ebp + 0xb]
mov byte [esi + 3], al
mov al, byte [ebp - 1]
mov byte [esi + 5], al
mov al, byte [ebp - 5]
pop edi
mov byte [esi + 4], bl
mov byte [esi], cl
mov byte [esi + 6], al
mov byte [esi + 7], dl
pop esi
pop ebx
leave
ret