Function at 0x4c3270
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 0x4c33ad
cmp edi, 8
jb 0x4c3360
lea eax, [ebp - 4]
mov dword [esp + 0x10], ecx
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x4c32c7
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebp
jae 0x4c3360
lea eax, [ebx - 4]
lea eax, [eax + edi*4]
cmp edx, eax
ja 0x4c32df
lea eax, [edx - 4]
lea eax, [eax + edi*4]
cmp eax, ebx
jae 0x4c3360
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 0x4c3315
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 0x4c33ad
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 0x4c3391
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 0x4c34a0
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 0x4c34a0
cmp esi, 0x20
jb 0x4c3483
lea eax, [ebp - 1]
lea ecx, [edx - 1]
add eax, esi
add ecx, esi
cmp edx, eax
ja 0x4c33f7
cmp ecx, ebp
jae 0x4c3483
lea eax, [ebx - 1]
add eax, esi
cmp edx, eax
ja 0x4c3404
cmp ecx, ebx
jae 0x4c3483
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 0x4c3440
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x30]
cmp edi, esi
jae 0x4c34a0
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 0x4c3490
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret