Function at 0x4fa688
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe0
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
movzx eax, byte [eax + 0x48]
mov edx, dword [ebp - 4]
mov eax, dword [edx + eax*4 + 0x40]
mov al, byte [eax]
dec al
je 0x4fa6c2
dec al
je 0x4fa72f
dec al
je 0x4fa796
dec al
je 0x4fa843
jmp 0x4fa91e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
inc eax
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x20]
sub edx, eax
jb 0x4fa91e
inc edx
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x24]
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov al, byte [edx + eax]
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov ecx, dword [ebp - 0x1c]
add al, byte [edx + ecx]
and al, 0xff
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov ecx, dword [ebp - 0x1c]
mov byte [edx + ecx], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x20]
jne 0x4fa6de
jmp 0x4fa91e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
test eax, eax
jbe 0x4fa91e
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x48]
xor al, 1
and eax, 0x7f
mov edx, dword [ebp - 4]
mov eax, dword [edx + eax*4 + 0x40]
mov edx, dword [ebp - 0x1c]
mov al, byte [eax + edx]
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov ecx, dword [ebp - 0x1c]
add al, byte [edx + ecx]
and al, 0xff
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov ecx, dword [ebp - 0x1c]
mov byte [edx + ecx], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x20]
jne 0x4fa747
jmp 0x4fa91e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
test eax, eax
jbe 0x4fa91e
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x48]
xor al, 1
and eax, 0x7f
mov edx, dword [ebp - 4]
mov eax, dword [edx + eax*4 + 0x40]
mov edx, dword [ebp - 0x1c]
movzx eax, byte [eax + edx]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x1c]
dec eax
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x24]
jae 0x4fa7dd
xor eax, eax
mov dword [ebp - 0x10], eax
jmp 0x4fa7fb
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x24]
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
movzx eax, byte [edx + eax]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x14]
sar eax, 1
jns 0x4fa808
adc eax, 0
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov ecx, dword [ebp - 0x1c]
add al, byte [edx + ecx]
and al, 0xff
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov ecx, dword [ebp - 0x1c]
mov byte [edx + ecx], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x20]
jne 0x4fa7ae
jmp 0x4fa91e
xor eax, eax
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
test eax, eax
jbe 0x4fa91e
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x48]
xor al, 1
and eax, 0x7f
mov edx, dword [ebp - 4]
mov eax, dword [edx + eax*4 + 0x40]
mov edx, dword [ebp - 0x1c]
movzx eax, byte [eax + edx]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x1c]
dec eax
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x24]
jb 0x4fa8cd
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x24]
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
movzx eax, byte [edx + eax]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x48]
xor al, 1
and eax, 0x7f
mov edx, dword [ebp - 4]
mov eax, dword [edx + eax*4 + 0x40]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 4]
sub edx, dword [ecx + 0x24]
movzx eax, byte [eax + edx]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
movzx eax, byte [eax + 0x48]
mov edx, dword [ebp - 4]
mov eax, dword [edx + eax*4 + 0x40]
mov edx, dword [ebp - 0x1c]
movzx eax, byte [eax + edx]
mov dword [ebp - 0xc], eax
mov cl, byte [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov al, byte [ebp - 0x10]
call fcn.004f6dd0
mov byte [ebp - 5], al
mov al, byte [ebp - 0xc]
add al, byte [ebp - 5]
and al, 0xff
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x48]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + edx*4 + 0x40]
mov ecx, dword [ebp - 0x1c]
mov byte [edx + ecx], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x20]
jne 0x4fa865
mov esp, ebp
pop ebp
ret