Function at 0x49a2e0
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 0x49a3b1
test ebx, ebx
je 0x49a34d
mov edx, dword [esp + 0x38]
test edx, edx
je 0x49a34d
mov edx, dword [esp + 0x34]
mov ebp, esi
mov edi, dword [esp + 0x38]
jmp 0x49a319
test edi, edi
je 0x49a343
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 0x49a315
mov dword [esp + 0x34], edx
mov esi, ebp
mov dword [esp + 0x38], edi
cmp dword [esp + 0x38], 0xf
jbe 0x49a558
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 0x49a39b
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 0x49a384
sub ecx, 0x10
add ebp, 0x10
add edi, 0x10
cmp ecx, 0xf
jbe 0x49a49b
xor ebx, ebx
jmp 0x49a364
test ebx, ebx
je 0x49a401
mov eax, dword [esp + 0x38]
test eax, eax
je 0x49a401
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
jmp 0x49a3d4
test edi, edi
je 0x49a3f5
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 0x49a3d0
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edi
cmp dword [esp + 0x38], 0xf
jbe 0x49a54f
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 0x49a455
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 0x49a440
sub edi, 0x10
add ebp, 0x10
add ecx, 0x10
cmp edi, 0xf
jbe 0x49a467
xor ebx, ebx
jmp 0x49a420
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 0x49a510
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 0x49a48d
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 0x49a4e6
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 0x49a536
add ebx, eax
jmp 0x49a502
mov edi, dword [esp + 0x38]
jmp 0x49a485
mov ebp, dword [esp + 0x38]
jmp 0x49a4b9