Function at 0x4b6930
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 4]
mov edx, dword [edi + 4]
xor ecx, ecx
mov ebx, esi
sub ebx, edx
mov dword [esp + 4], ebx
jge 0x4b6a8a
mov ebx, dword [edi]
mov dword [esp], edx
sub edx, esi
xor ecx, ecx
mov ebp, esi
cmp edx, 8
jb 0x4b6a71
mov dword [esp + 8], edx
mov ebp, edx
and ebp, 0xfffffff8
lea eax, [ebp - 8]
mov ecx, eax
shr ecx, 3
add ecx, 1
mov edx, ecx
and edx, 3
cmp eax, 0x18
jae 0x4b6993
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
jmp 0x4b6a07
and ecx, 0xfffffffc
lea eax, [ebx + esi*4]
add eax, 0x70
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [eax + edi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [eax + edi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [eax + edi*4 - 0x50]
movdqu xmm3, xmmword [eax + edi*4 - 0x40]
movdqu xmm4, xmmword [eax + edi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [eax + edi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [eax + edi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [eax + edi*4]
por xmm1, xmm2
add edi, 0x20
add ecx, 0xfffffffc
jne 0x4b69b0
test edx, edx
je 0x4b6a3a
add edi, esi
lea eax, [ebx + edi*4]
add eax, 0x10
shl edx, 5
xor ecx, ecx
nop dword [eax + eax]
movdqu xmm2, xmmword [eax + ecx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ecx]
por xmm1, xmm2
add ecx, 0x20
cmp edx, ecx
jne 0x4b6a20
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp dword [esp + 8], ebp
jne 0x4b6a67
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov edx, dword [esp]
jmp 0x4b6a8a
add ebp, esi
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov edx, dword [esp]
nop word cs:[eax + eax]
nop
or ecx, dword [ebx + ebp*4]
add ebp, 1
cmp edx, ebp
jne 0x4b6a80
cmp edx, esi
jge 0x4b6baa
mov ebx, dword [eax]
mov ebp, dword [esp + 4]
cmp ebp, 8
jae 0x4b6aa4
mov ebp, edx
jmp 0x4b6ba0
and ebp, 0xfffffff8
movd xmm0, ecx
lea eax, [ebp - 8]
mov edi, eax
shr edi, 3
add edi, 1
mov ecx, edi
and ecx, 3
mov dword [esp], ecx
cmp eax, 0x18
jae 0x4b6acb
pxor xmm1, xmm1
xor ecx, ecx
jmp 0x4b6b37
and edi, 0xfffffffc
lea eax, [ebx + edx*4]
add eax, 0x70
pxor xmm1, xmm1
xor ecx, ecx
nop word [eax + eax]
movdqu xmm2, xmmword [eax + ecx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [eax + ecx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [eax + ecx*4 - 0x50]
movdqu xmm3, xmmword [eax + ecx*4 - 0x40]
movdqu xmm4, xmmword [eax + ecx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [eax + ecx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [eax + ecx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [eax + ecx*4]
por xmm1, xmm2
add ecx, 0x20
add edi, 0xfffffffc
jne 0x4b6ae0
mov edi, dword [esp]
test edi, edi
je 0x4b6b6a
add ecx, edx
lea eax, [ebx + ecx*4]
add eax, 0x10
shl edi, 5
xor ecx, ecx
nop dword [eax + 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 0x4b6b50
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp dword [esp + 4], ebp
mov edi, dword [esp + 0x24]
jne 0x4b6b94
mov eax, dword [esp + 0x20]
jmp 0x4b6baa
add ebp, edx
mov eax, dword [esp + 0x20]
nop word [eax + eax]
or ecx, dword [ebx + ebp*4]
add ebp, 1
cmp esi, ebp
jne 0x4b6ba0
cmp esi, edx
cmovl edx, esi
test edx, edx
jle 0x4b6cb4
mov esi, dword [eax]
mov edi, dword [edi]
xor ebx, ebx
cmp edx, 4
jb 0x4b6ca5
mov ebx, edx
and ebx, 0xfffffffc
movd xmm0, ecx
lea eax, [ebx - 4]
mov ebp, eax
shr ebp, 2
add ebp, 1
mov ecx, ebp
and ecx, 3
mov dword [esp + 4], ecx
cmp eax, 0xc
mov dword [esp], edx
jae 0x4b6bef
xor ecx, ecx
jmp 0x4b6c56
and ebp, 0xfffffffc
xor ecx, ecx
nop word cs:[eax + eax]
nop
movdqu xmm1, xmmword [esi + ecx*4]
movdqu xmm2, xmmword [esi + ecx*4 + 0x10]
movdqu xmm3, xmmword [edi + ecx*4]
pxor xmm3, xmm1
por xmm3, xmm0
movdqu xmm0, xmmword [edi + ecx*4 + 0x10]
pxor xmm0, xmm2
movdqu xmm1, xmmword [esi + ecx*4 + 0x20]
movdqu xmm2, xmmword [edi + ecx*4 + 0x20]
pxor xmm2, xmm1
por xmm2, xmm0
por xmm2, xmm3
movdqu xmm1, xmmword [esi + ecx*4 + 0x30]
movdqu xmm0, xmmword [edi + ecx*4 + 0x30]
pxor xmm0, xmm1
por xmm0, xmm2
add ecx, 0x10
add ebp, 0xfffffffc
jne 0x4b6c00
mov edx, dword [esp + 4]
test edx, edx
je 0x4b6c8a
lea ebp, [edi + ecx*4]
lea ecx, [esi + ecx*4]
shl edx, 4
xor eax, eax
nop dword [eax]
movdqu xmm1, xmmword [ecx + eax]
movdqu xmm2, xmmword [ebp + eax]
pxor xmm2, xmm1
por xmm0, xmm2
add eax, 0x10
cmp edx, eax
jne 0x4b6c70
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
mov edx, dword [esp]
jmp 0x4b6cb0
mov eax, dword [edi + ebx*4]
xor eax, dword [esi + ebx*4]
or ecx, eax
add ebx, 1
cmp edx, ebx
jne 0x4b6ca5
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0xc]
mov eax, dword [esp + 0x20]
xor edx, dword [eax + 0xc]
xor eax, eax
or edx, ecx
sete al
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret