Function at 0x494f70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1c
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
test ecx, ecx
mov ebx, dword [eax]
jne 0x495041
test ebx, ebx
je 0x494fdd
mov edx, dword [esp + 0x38]
test edx, edx
je 0x494fdd
mov edx, dword [esp + 0x34]
mov ebp, esi
mov edi, dword [esp + 0x38]
jmp 0x494fa9
test edi, edi
je 0x494fd3
add dword [esp + 0x30], 1
add edx, 1
mov eax, dword [esp + 0x30]
lea ecx, [ebp + ebx]
add ebx, 1
sub edi, 1
movzx esi, byte [eax - 1]
mov eax, esi
xor al, byte [ecx]
and ebx, 0xf
mov byte [edx - 1], al
mov eax, esi
mov byte [ecx], al
jne 0x494fa5
mov dword [esp + 0x34], edx
mov esi, ebp
mov dword [esp + 0x38], edi
cmp dword [esp + 0x38], 0xf
jbe 0x4951e8
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], ecx
mov dword [esp + 4], esi
mov dword [esp], esi
mov dword [esp + 8], eax
call dword [esp + 0x4c]
cmp ebx, 0xf
mov ecx, dword [esp + 0xc]
ja 0x49502b
mov eax, dword [edi + ebx]
mov edx, dword [esi + ebx]
xor edx, eax
mov dword [ebp + ebx], edx
mov dword [esi + ebx], eax
add ebx, 4
cmp ebx, 0xf
jbe 0x495014
sub ecx, 0x10
add ebp, 0x10
add edi, 0x10
cmp ecx, 0xf
jbe 0x49512b
xor ebx, ebx
jmp 0x494ff4
test ebx, ebx
je 0x495091
mov eax, dword [esp + 0x38]
test eax, eax
je 0x495091
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
jmp 0x495064
test edi, edi
je 0x495085
lea ebp, [esi + ebx]
add edx, 1
movzx eax, byte [ebp]
add ebx, 1
add ecx, 1
xor al, byte [edx - 1]
sub edi, 1
and ebx, 0xf
mov byte [ebp], al
mov byte [ecx - 1], al
jne 0x495060
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edi
cmp dword [esp + 0x38], 0xf
jbe 0x4951df
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov ecx, edi
mov edi, edx
lea esi, [esi]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], ecx
mov dword [esp + 4], esi
mov dword [esp], esi
mov dword [esp + 8], eax
call dword [esp + 0x4c]
cmp ebx, 0xf
mov ecx, dword [esp + 0xc]
ja 0x4950e5
mov eax, dword [ecx + ebx]
xor eax, dword [esi + ebx]
mov dword [esi + ebx], eax
mov dword [ebp + ebx], eax
add ebx, 4
cmp ebx, 0xf
jbe 0x4950d0
sub edi, 0x10
add ebp, 0x10
add ecx, 0x10
cmp edi, 0xf
jbe 0x4950f7
xor ebx, ebx
jmp 0x4950b0
mov eax, dword [esp + 0x38]
xor ebx, ebx
mov edi, dword [esp + 0x38]
sub eax, 0x10
and eax, 0xfffffff0
and edi, 0xf
add eax, 0x10
add dword [esp + 0x34], eax
add dword [esp + 0x30], eax
test edi, edi
jne 0x4951a0
mov eax, dword [esp + 0x44]
mov dword [eax], ebx
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x38]
xor ebx, ebx
mov ebp, dword [esp + 0x38]
sub eax, 0x10
and eax, 0xfffffff0
and ebp, 0xf
add eax, 0x10
add dword [esp + 0x34], eax
add dword [esp + 0x30], eax
test ebp, ebp
je 0x49511d
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], esi
mov dword [esp], esi
mov dword [esp + 8], eax
call dword [esp + 0x4c]
mov edi, dword [esp + 0x30]
lea edx, [esi + ebx]
mov ecx, dword [esp + 0x34]
xor eax, eax
mov dword [esp + 0xc], ebx
add edi, ebx
lea esi, [ecx + ebx]
movzx ecx, byte [edi + eax]
mov ebx, ecx
xor bl, byte [edx + eax]
mov byte [esi + eax], bl
mov byte [edx + eax], cl
add eax, 1
cmp eax, ebp
jne 0x495176
mov ebx, dword [esp + 0xc]
add ebx, eax
mov eax, dword [esp + 0x44]
mov dword [eax], ebx
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], esi
mov dword [esp], esi
mov dword [esp + 8], eax
call dword [esp + 0x4c]
mov ecx, dword [esp + 0x30]
lea edx, [esi + ebx]
mov esi, dword [esp + 0x34]
xor eax, eax
add ecx, ebx
add esi, ebx
mov ebp, ecx
movzx ecx, byte [ebp + eax]
xor cl, byte [edx + eax]
mov byte [edx + eax], cl
mov byte [esi + eax], cl
add eax, 1
cmp eax, edi
jne 0x4951c6
add ebx, eax
jmp 0x495192
mov edi, dword [esp + 0x38]
jmp 0x495115
mov ebp, dword [esp + 0x38]
jmp 0x495149