Function at 0x5649f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
mov ebx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
mov eax, dword [edx]
mov ecx, dword [ebp + 0x20]
test ecx, ecx
jne 0x564b21
test eax, eax
je 0x564a63
mov edx, dword [ebp + 0x10]
test edx, edx
je 0x564b14
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], ebx
jmp 0x564a37
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x564b14
mov ebx, dword [ebp - 0x1c]
add ebx, eax
movzx esi, byte [edx]
mov cl, byte [ebx]
xor ecx, esi
mov edi, dword [ebp - 0x20]
mov byte [edi], cl
inc edi
mov dword [ebp - 0x20], edi
inc edx
mov ecx, esi
mov byte [ebx], cl
dec dword [ebp + 0x10]
inc eax
and eax, 0xf
jne 0x564a2c
mov dword [ebp + 8], edx
mov dword [ebp + 0xc], edi
mov ebx, dword [ebp - 0x1c]
cmp dword [ebp + 0x10], 0xf
jbe 0x564ad6
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], 0
nop
mov edi, dword [ebp + 0xc]
sub edi, dword [ebp - 0x1c]
mov esi, dword [ebp + 8]
sub esi, dword [ebp - 0x1c]
mov eax, dword [ebp + 0x14]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], ebx
call dword [ebp + 0x24]
xor eax, eax
nop
mov edx, dword [esi + eax]
mov ecx, dword [ebx + eax]
xor ecx, edx
mov dword [edi + eax], ecx
mov dword [ebx + eax], edx
add eax, 4
cmp eax, 0x10
jne 0x564a98
sub dword [ebp - 0x20], 0x10
sub dword [ebp - 0x1c], 0x10
cmp dword [ebp - 0x20], 0xf
ja 0x564a78
mov eax, dword [ebp + 0x10]
sub eax, 0x10
mov edx, eax
and edx, 0xf
mov dword [ebp + 0x10], edx
and eax, 0xfffffff0
add eax, 0x10
add dword [ebp + 0xc], eax
add dword [ebp + 8], eax
mov edx, dword [ebp + 0x10]
test edx, edx
je 0x564c09
mov ecx, dword [ebp + 0x14]
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], ebx
call dword [ebp + 0x24]
mov esi, dword [ebp + 0x10]
xor eax, eax
mov edi, dword [ebp + 0xc]
nop
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + eax]
mov cl, dl
xor cl, byte [ebx + eax]
mov byte [edi + eax], cl
mov byte [ebx + eax], dl
inc eax
dec esi
jne 0x564afc
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 0x1c]
mov dword [edi], eax
add esp, 0x3c
pop ebx
pop esi
pop edi
leave
ret
test eax, eax
je 0x564b62
mov edi, dword [ebp + 0x10]
test edi, edi
je 0x564b14
mov ecx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x1c], ebx
mov ebx, dword [ebp + 0xc]
jmp 0x564b40
test edi, edi
je 0x564b14
mov esi, dword [ebp - 0x1c]
add esi, eax
mov dl, byte [esi]
xor dl, byte [ecx]
mov byte [esi], dl
mov byte [ebx], dl
inc ebx
inc ecx
dec edi
inc eax
and eax, 0xf
jne 0x564b3c
mov dword [ebp + 8], ecx
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0x10], edi
mov ebx, dword [ebp - 0x1c]
cmp dword [ebp + 0x10], 0xf
jbe 0x564bcf
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x1c], ecx
xor ecx, ecx
mov edi, dword [ebp + 0xc]
sub edi, ecx
mov esi, dword [ebp + 8]
sub esi, ecx
mov eax, dword [ebp + 0x14]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], ebx
mov dword [ebp - 0x24], ecx
call dword [ebp + 0x24]
xor eax, eax
mov ecx, dword [ebp - 0x24]
nop
mov edx, dword [esi + eax]
xor edx, dword [ebx + eax]
mov dword [ebx + eax], edx
mov dword [edi + eax], edx
add eax, 4
cmp eax, 0x10
jne 0x564b94
sub dword [ebp - 0x1c], 0x10
sub ecx, 0x10
cmp dword [ebp - 0x1c], 0xf
ja 0x564b70
mov eax, dword [ebp + 0x10]
sub eax, 0x10
mov edx, eax
and edx, 0xf
mov dword [ebp + 0x10], edx
and eax, 0xfffffff0
add eax, 0x10
add dword [ebp + 0xc], eax
add dword [ebp + 8], eax
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x564c09
mov ecx, dword [ebp + 0x14]
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], ebx
call dword [ebp + 0x24]
mov ecx, dword [ebp + 0x10]
xor eax, eax
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
nop
mov dl, byte [esi + eax]
xor dl, byte [ebx + eax]
mov byte [ebx + eax], dl
mov byte [edi + eax], dl
inc eax
dec ecx
jne 0x564bf4
jmp 0x564b11
xor eax, eax
mov edi, dword [ebp + 0x1c]
mov dword [edi], eax
add esp, 0x3c
pop ebx
pop esi
pop edi
leave
ret