Function at 0x52d070
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x14
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov esi, dword [eax + 4]
mov eax, dword [edi + 4]
xor ecx, ecx
mov edx, esi
mov dword [ebp - 0x10], esi
sub esi, eax
mov dword [ebp - 0x1c], esi
mov esi, eax
mov dword [ebp - 0x14], eax
jge 0x52d1ba
mov ebx, dword [edi]
mov esi, dword [ebp - 0x10]
sub eax, esi
xor ecx, ecx
cmp eax, 8
jb 0x52d1a4
mov dword [ebp - 0x18], eax
mov esi, eax
and esi, 0xfffffff8
lea eax, [esi - 8]
mov ecx, eax
shr ecx, 3
add ecx, 1
mov edi, ecx
and edi, 3
mov dword [ebp - 0x20], edi
cmp eax, 0x18
jae 0x52d0da
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
jmp 0x52d147
and ecx, 0xfffffffc
mov eax, dword [ebp - 0x10]
lea edi, [ebx + eax*4]
add edi, 0x70
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
movdqu xmm2, xmmword [edi + eax*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + eax*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + eax*4 - 0x50]
movdqu xmm3, xmmword [edi + eax*4 - 0x40]
movdqu xmm4, xmmword [edi + eax*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + eax*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + eax*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + eax*4]
por xmm1, xmm2
add eax, 0x20
add ecx, 0xfffffffc
jne 0x52d0f0
mov edi, dword [ebp - 0x20]
test edi, edi
je 0x52d17a
add eax, dword [ebp - 0x10]
lea eax, [ebx + eax*4]
add eax, 0x10
shl edi, 5
xor ecx, ecx
nop dword [eax]
movdqu xmm2, xmmword [eax + ecx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ecx]
por xmm1, xmm2
add ecx, 0x20
cmp edi, ecx
jne 0x52d160
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp dword [ebp - 0x18], esi
mov edi, dword [ebp + 0xc]
jne 0x52d1a1
mov eax, dword [ebp - 0x14]
jmp 0x52d1ba
add esi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
nop word [eax + eax]
or ecx, dword [ebx + esi*4]
add esi, 1
cmp eax, esi
jne 0x52d1b0
mov esi, dword [ebp - 0x10]
cmp eax, esi
jge 0x52d1d6
mov eax, dword [ebp + 8]
mov ebx, dword [eax]
mov esi, dword [ebp - 0x1c]
cmp esi, 8
jae 0x52d1dd
mov esi, dword [ebp - 0x14]
jmp 0x52d2d1
mov eax, esi
jmp 0x52d2ea
and esi, 0xfffffff8
movd xmm0, ecx
lea ecx, [esi - 8]
mov eax, ecx
shr eax, 3
add eax, 1
mov edi, eax
and edi, 3
mov dword [ebp - 0x18], edi
cmp ecx, 0x18
jae 0x52d204
pxor xmm1, xmm1
xor ecx, ecx
jmp 0x52d277
and eax, 0xfffffffc
mov ecx, dword [ebp - 0x14]
lea edi, [ebx + ecx*4]
add edi, 0x70
pxor xmm1, xmm1
xor ecx, ecx
nop word cs:[eax + eax]
movdqu xmm2, xmmword [edi + ecx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + ecx*4 - 0x50]
movdqu xmm3, xmmword [edi + ecx*4 - 0x40]
movdqu xmm4, xmmword [edi + ecx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + ecx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + ecx*4]
por xmm1, xmm2
add ecx, 0x20
add eax, 0xfffffffc
jne 0x52d220
mov edx, dword [ebp - 0x18]
test edx, edx
mov edi, dword [ebp + 0xc]
je 0x52d2aa
add ecx, dword [ebp - 0x14]
lea eax, [ebx + ecx*4]
add eax, 0x10
shl edx, 5
xor ecx, ecx
nop
movdqu xmm2, xmmword [eax + ecx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ecx]
por xmm1, xmm2
add ecx, 0x20
cmp edx, ecx
jne 0x52d290
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp dword [ebp - 0x1c], esi
jne 0x52d2ce
mov eax, dword [ebp - 0x10]
jmp 0x52d2ea
add esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
nop word cs:[eax + eax]
nop
or ecx, dword [ebx + esi*4]
add esi, 1
cmp eax, esi
jne 0x52d2e0
mov ebx, dword [ebp - 0x14]
cmp eax, ebx
cmovl ebx, eax
test ebx, ebx
jle 0x52d3f9
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov esi, dword [edi]
xor edi, edi
cmp ebx, 4
jb 0x52d3ea
mov dword [ebp - 0x14], ebx
mov edi, ebx
and edi, 0xfffffffc
movd xmm0, ecx
lea edx, [edi - 4]
mov ecx, edx
shr ecx, 2
add ecx, 1
mov ebx, ecx
and ebx, 3
mov dword [ebp - 0x18], ebx
cmp edx, 0xc
jae 0x52d334
xor ebx, ebx
jmp 0x52d396
and ecx, 0xfffffffc
xor ebx, ebx
nop dword [eax]
movdqu xmm1, xmmword [eax + ebx*4]
movdqu xmm2, xmmword [eax + ebx*4 + 0x10]
movdqu xmm3, xmmword [esi + ebx*4]
pxor xmm3, xmm1
por xmm3, xmm0
movdqu xmm0, xmmword [esi + ebx*4 + 0x10]
pxor xmm0, xmm2
movdqu xmm1, xmmword [eax + ebx*4 + 0x20]
movdqu xmm2, xmmword [esi + ebx*4 + 0x20]
pxor xmm2, xmm1
por xmm2, xmm0
por xmm2, xmm3
movdqu xmm1, xmmword [eax + ebx*4 + 0x30]
movdqu xmm0, xmmword [esi + ebx*4 + 0x30]
pxor xmm0, xmm1
por xmm0, xmm2
add ebx, 0x10
add ecx, 0xfffffffc
jne 0x52d340
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x52d3cf
lea edx, [esi + ebx*4]
mov dword [ebp - 0x10], edx
lea edx, [eax + ebx*4]
mov dword [ebp - 0x1c], edx
shl ecx, 4
xor edx, edx
nop
mov ebx, dword [ebp - 0x1c]
movdqu xmm1, xmmword [ebx + edx]
mov ebx, dword [ebp - 0x10]
movdqu xmm2, xmmword [ebx + edx]
pxor xmm2, xmm1
por xmm0, xmm2
add edx, 0x10
cmp ecx, edx
jne 0x52d3b0
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
mov ebx, dword [ebp - 0x14]
jmp 0x52d3f5
mov edx, dword [esi + edi*4]
xor edx, dword [eax + edi*4]
or ecx, edx
add edi, 1
cmp ebx, edi
jne 0x52d3ea
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + 8]
xor edx, dword [eax + 0xc]
xor eax, eax
or edx, ecx
sete al
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret