Function at 0x460c30
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 0x460d01
test ebx, ebx
je 0x460c9d
mov edx, dword [esp + 0x38]
test edx, edx
je 0x460c9d
mov edx, dword [esp + 0x34]
mov ebp, esi
mov edi, dword [esp + 0x38]
jmp 0x460c69
test edi, edi
je 0x460c93
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 0x460c65
mov dword [esp + 0x34], edx
mov esi, ebp
mov dword [esp + 0x38], edi
cmp dword [esp + 0x38], 0xf
jbe 0x460ea8
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 0x460ceb
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 0x460cd4
sub ecx, 0x10
add ebp, 0x10
add edi, 0x10
cmp ecx, 0xf
jbe 0x460deb
xor ebx, ebx
jmp 0x460cb4
test ebx, ebx
je 0x460d51
mov eax, dword [esp + 0x38]
test eax, eax
je 0x460d51
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
jmp 0x460d24
test edi, edi
je 0x460d45
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 0x460d20
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edi
cmp dword [esp + 0x38], 0xf
jbe 0x460e9f
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 0x460da5
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 0x460d90
sub edi, 0x10
add ebp, 0x10
add ecx, 0x10
cmp edi, 0xf
jbe 0x460db7
xor ebx, ebx
jmp 0x460d70
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 0x460e60
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 0x460ddd
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 0x460e36
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 0x460e86
add ebx, eax
jmp 0x460e52
mov edi, dword [esp + 0x38]
jmp 0x460dd5
mov ebp, dword [esp + 0x38]
jmp 0x460e09