Function at 0x52cb40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x14
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
cmp edx, eax
mov esi, eax
cmovb esi, edx
test esi, esi
mov dword [ebp - 0x1c], edx
je 0x52cbb9
xor edx, edx
xor edi, edi
mov dword [ebp - 0x10], esi
nop word cs:[eax + eax]
nop
mov dword [ebp - 0x14], edx
mov eax, dword [ebx + edi*4]
mov edx, dword [ecx + edi*4]
mov ebx, edx
xor ebx, eax
mov esi, edx
sub esi, eax
lea eax, [ebx - 1]
xor esi, edx
or esi, ebx
not ebx
and eax, ebx
mov ebx, dword [ebp + 8]
sar eax, 0x1f
xor esi, edx
sar esi, 0x1f
mov edx, esi
not esi
and esi, 1
or esi, edx
mov edx, eax
and edx, dword [ebp - 0x14]
not eax
and eax, esi
mov esi, dword [ebp - 0x10]
or eax, edx
add edi, 1
mov edx, eax
cmp esi, edi
jne 0x52cb70
jmp 0x52cbbb
xor eax, eax
mov edx, dword [ebp - 0x1c]
mov edi, edx
mov esi, dword [ebp + 0xc]
sub edi, esi
jae 0x52cc05
mov edi, esi
sub edi, edx
xor ecx, ecx
cmp edi, 8
jb 0x52cd30
mov ecx, edi
and ecx, 0xfffffff8
mov dword [ebp - 0x10], ecx
add ecx, 0xfffffff8
mov esi, ecx
shr esi, 3
add esi, 1
mov ebx, esi
and ebx, 3
cmp ecx, 0x18
mov dword [ebp - 0x14], edi
jae 0x52cc4f
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
jmp 0x52ccc7
jbe 0x52ce53
mov ebx, edi
xor edi, edi
cmp ebx, 8
jb 0x52ce30
mov dword [ebp - 0x14], ebx
and ebx, 0xfffffff8
mov dword [ebp - 0x10], ebx
lea edi, [ebx - 8]
mov edx, edi
shr edx, 3
add edx, 1
mov ebx, edx
and ebx, 3
mov dword [ebp - 0x20], ebx
cmp edi, 0x18
mov dword [ebp - 0x18], ecx
jae 0x52cd55
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
jmp 0x52cdc7
and esi, 0xfffffffc
mov ecx, dword [ebp + 8]
lea edi, [ecx + edx*4]
add edi, 0x70
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
nop word cs:[eax + eax]
nop
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 esi, 0xfffffffc
jne 0x52cc70
mov edi, ebx
test ebx, ebx
mov ebx, dword [ebp + 8]
je 0x52ccfa
add ecx, edx
lea ecx, [ebx + ecx*4]
add ecx, 0x10
shl edi, 5
xor esi, esi
nop dword [eax]
movdqu xmm2, xmmword [ecx + esi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + esi]
por xmm1, xmm2
add esi, 0x20
cmp edi, esi
jne 0x52cce0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
mov esi, dword [ebp - 0x10]
cmp dword [ebp - 0x14], esi
je 0x52cd3a
add edx, esi
mov esi, dword [ebp + 0xc]
nop word cs:[eax + eax]
nop dword [eax + eax]
or ecx, dword [ebx + edx*4]
add edx, 1
cmp esi, edx
jne 0x52cd30
mov edx, ecx
not edx
add ecx, 0xffffffff
and ecx, edx
sar ecx, 0x1f
mov edx, ecx
and edx, eax
not ecx
or ecx, edx
mov eax, ecx
jmp 0x52ce53
and edx, 0xfffffffc
lea edi, [ecx + esi*4]
add edi, 0x70
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [eax + eax]
movdqu xmm2, xmmword [edi + ebx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ebx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + ebx*4 - 0x50]
movdqu xmm3, xmmword [edi + ebx*4 - 0x40]
movdqu xmm4, xmmword [edi + ebx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + ebx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ebx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + ebx*4]
por xmm1, xmm2
add ebx, 0x20
add edx, 0xfffffffc
jne 0x52cd70
mov edx, dword [ebp - 0x20]
test edx, edx
je 0x52cdfa
add ebx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x18]
lea ecx, [ecx + ebx*4]
add ecx, 0x10
shl edx, 5
xor esi, esi
nop
movdqu xmm2, xmmword [ecx + esi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + esi]
por xmm1, xmm2
add esi, 0x20
cmp edx, esi
jne 0x52cde0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edi, xmm0
mov ecx, dword [ebp - 0x10]
cmp dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x1c]
je 0x52ce3a
mov esi, dword [ebp + 0xc]
add esi, ecx
mov ecx, dword [ebp - 0x18]
nop word [eax + eax]
or edi, dword [ecx + esi*4]
add esi, 1
cmp edx, esi
jne 0x52ce30
mov ecx, edi
not ecx
add edi, 0xffffffff
and edi, ecx
sar edi, 0x1f
mov ecx, edi
and ecx, eax
not edi
and edi, 1
or edi, ecx
mov eax, edi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret