Function at 0x420560
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
push ebp
mov ebp, dword [esp + 0x28]
mov ebx, edx
push esi
mov esi, dword [esp + 0x30]
mov edx, ecx
push edi
mov edi, esi
mov dword [esp + 0x18], ebx
shr edi, 2
xor ecx, ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x28], edi
test edi, edi
je 0x42069d
cmp edi, 8
jb 0x420650
lea eax, [ebp - 4]
mov dword [esp + 0x10], ecx
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x4205b7
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebp
jae 0x420650
lea eax, [ebx - 4]
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x4205cf
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebx
jae 0x420650
mov eax, edi
mov esi, edi
and eax, 7
sub esi, eax
lea eax, [ebx + 0x10]
mov dword [esp + 0x24], esi
mov esi, edx
sub esi, ebx
mov dword [esp + 0x10], esi
mov esi, ebp
mov edi, dword [esp + 0x10]
sub esi, ebx
mov dword [esp + 0x1c], esi
mov esi, edx
mov edx, dword [esp + 0x1c]
sub esi, ebp
mov dword [esp + 0x20], esi
mov esi, ebp
mov ebx, dword [esp + 0x20]
movdqu xmm0, xmmword [esi]
add ecx, 8
lea esi, [esi + 0x20]
lea eax, [eax + 0x20]
movdqu xmm1, xmmword [eax - 0x30]
pxor xmm1, xmm0
movdqu xmmword [ebx + esi - 0x20], xmm1
movdqu xmm1, xmmword [edx + eax - 0x20]
movdqu xmm0, xmmword [eax - 0x20]
pxor xmm1, xmm0
movdqu xmmword [edi + eax - 0x20], xmm1
cmp ecx, dword [esp + 0x24]
jb 0x420605
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
cmp ecx, edi
jae 0x42069d
mov eax, ebx
lea ecx, [ecx*4]
sub eax, ebp
add ecx, ebp
mov dword [esp + 0x28], eax
mov eax, edx
mov esi, dword [esp + 0x28]
sub eax, ebp
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x10]
sub edi, eax
mov ebp, dword [esp + 0x24]
add eax, edi
mov dword [esp + 0x10], eax
mov eax, dword [esi + ecx]
lea ecx, [ecx + 4]
xor eax, dword [ecx - 4]
mov dword [ecx + ebp - 4], eax
dec edi
jne 0x420681
mov esi, dword [esp + 0x34]
mov ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
shl ecx, 2
sub esi, ecx
mov dword [esp + 0x34], esi
je 0x420790
add edx, ecx
add ebx, ecx
add ebp, ecx
mov dword [esp + 0x14], edx
xor edi, edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], ebp
test esi, esi
je 0x420790
cmp esi, 0x20
jb 0x420773
lea eax, [ebp - 1]
lea ecx, [edx - 1]
add eax, esi
add ecx, esi
cmp edx, eax
ja 0x4206e7
cmp ecx, ebp
jae 0x420773
lea eax, [ebx - 1]
add eax, esi
cmp edx, eax
ja 0x4206f4
cmp ecx, ebx
jae 0x420773
mov eax, esi
mov ecx, esi
mov esi, edx
and eax, 0x1f
sub esi, ebx
sub ecx, eax
mov dword [esp + 0x28], esi
mov eax, ebx
mov esi, ebp
mov dword [esp + 0x1c], ecx
sub esi, ebx
lea ecx, [ebp + 0x10]
mov dword [esp + 0x24], esi
mov esi, edx
mov edx, dword [esp + 0x24]
sub esi, ebp
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x20]
mov edi, edi
movdqu xmm0, xmmword [eax]
add edi, 0x20
lea eax, [eax + 0x20]
lea ecx, [ecx + 0x20]
movdqu xmm1, xmmword [eax + edx - 0x20]
pxor xmm1, xmm0
movdqu xmmword [eax + ebp - 0x20], xmm1
movdqu xmm1, xmmword [eax - 0x10]
movdqu xmm0, xmmword [ecx - 0x20]
pxor xmm1, xmm0
movdqu xmmword [ecx + ebx - 0x20], xmm1
cmp edi, dword [esp + 0x1c]
jb 0x420730
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x30]
cmp edi, esi
jae 0x420790
sub ebx, ebp
lea ecx, [edi + ebp]
sub edx, ebp
sub esi, edi
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [edx + ecx - 1], al
dec esi
jne 0x420780
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret