Function at 0x421910
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 0x421a4d
cmp edi, 8
jb 0x421a00
lea eax, [ebp - 4]
mov dword [esp + 0x10], ecx
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x421967
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebp
jae 0x421a00
lea eax, [ebx - 4]
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x42197f
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebx
jae 0x421a00
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 0x4219b5
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 0x421a4d
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 0x421a31
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 0x421b40
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 0x421b40
cmp esi, 0x20
jb 0x421b23
lea eax, [ebp - 1]
lea ecx, [edx - 1]
add eax, esi
add ecx, esi
cmp edx, eax
ja 0x421a97
cmp ecx, ebp
jae 0x421b23
lea eax, [ebx - 1]
add eax, esi
cmp edx, eax
ja 0x421aa4
cmp ecx, ebx
jae 0x421b23
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 0x421ae0
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x30]
cmp edi, esi
jae 0x421b40
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 0x421b30
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret