Function at 0x4cb170
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
push ebx
push esi
push edi
mov edi, ecx
xorps xmm0, xmm0
mov dword [ebp - 0xc], edi
mov esi, edx
movlpd qword [ebp - 0x24], xmm0
movlpd qword [ebp - 0x1c], xmm0
test edi, edi
je 0x4cb4bc
movups xmm0, xmmword [edi + 0x124]
lea edx, [ebp - 0x44]
push ecx
mov ecx, edx
movups xmmword [ebp - 0x44], xmm0
call fcn.004cd340
mov eax, dword [ebp + 8]
add esp, 4
test eax, eax
je 0x4cb2f0
test esi, esi
je 0x4cb2f0
mov ebx, eax
and eax, 0xf
shr ebx, 4
mov dword [ebp - 0x10], eax
test ebx, ebx
je 0x4cb28b
mov edi, esi
movups xmm0, xmmword [edi]
xor ecx, ecx
movups xmm1, xmmword [ebp - 0x24]
movups xmmword [ebp - 0x34], xmm0
movd eax, xmm0
psrldq xmm0, 4
movd edx, xmm0
mov esi, eax
rol eax, 8
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
or esi, eax
mov eax, edx
ror eax, 8
and eax, 0xff00ff00
rol edx, 8
and edx, 0xff00ff
mov dword [ebp - 0x30], esi
or eax, edx
mov edx, dword [ebp - 0x28]
or ecx, eax
mov eax, dword [ebp - 0x2c]
mov esi, eax
mov dword [ebp - 0x34], ecx
rol eax, 8
xor ecx, ecx
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
or esi, eax
mov eax, edx
ror eax, 8
rol edx, 8
and eax, 0xff00ff00
and edx, 0xff00ff
mov dword [ebp - 0x28], esi
or eax, edx
lea edx, [ebp - 0x44]
or ecx, eax
mov dword [ebp - 0x2c], ecx
lea ecx, [ebp - 0x24]
movups xmm0, xmmword [ebp - 0x34]
pxor xmm1, xmm0
movups xmmword [ebp - 0x24], xmm1
call fcn.004cb4d0
add edi, 0x10
sub ebx, 1
jne 0x4cb1d6
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], edi
mov edi, dword [ebp - 0xc]
mov esi, dword [ebp - 8]
test eax, eax
je 0x4cb2cc
push eax
lea eax, [ebp - 0x34]
xorps xmm0, xmm0
push esi
push eax
movups xmmword [ebp - 0x34], xmm0
call fcn.0041d170
add esp, 8
lea edx, [ebp - 0x34]
mov ecx, edx
call fcn.004cd340
movups xmm1, xmmword [ebp - 0x24]
add esp, 4
lea edx, [ebp - 0x44]
movups xmm0, xmmword [ebp - 0x34]
lea ecx, [ebp - 0x24]
pxor xmm1, xmm0
movups xmmword [ebp - 0x24], xmm1
call fcn.004cb4d0
mov eax, dword [ebp - 0x20]
mov dword [edi + 0x134], eax
mov eax, dword [ebp - 0x24]
mov dword [edi + 0x138], eax
mov eax, dword [ebp - 0x18]
mov dword [edi + 0x13c], eax
mov eax, dword [ebp - 0x1c]
mov dword [edi + 0x140], eax
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x4cb449
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x4cb449
mov ebx, esi
mov eax, esi
and eax, 0xf
shr ebx, 4
cmp dword [edi + 0x144], 0
mov dword [ebp - 0x10], eax
je 0x4cb344
mov ecx, dword [edi + 0x134]
xor eax, eax
or eax, dword [edi + 0x138]
mov dword [ebp - 0x24], eax
xor eax, eax
or eax, dword [edi + 0x140]
mov dword [ebp - 0x20], ecx
mov ecx, dword [edi + 0x13c]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], ecx
test ebx, ebx
je 0x4cb405
mov edi, edx
nop
movups xmm0, xmmword [edi]
xor ecx, ecx
movups xmmword [ebp - 0x34], xmm0
movd eax, xmm0
psrldq xmm0, 4
movd edx, xmm0
mov esi, eax
rol eax, 8
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
or esi, eax
mov eax, edx
ror eax, 8
movups xmm0, xmmword [ebp - 0x24]
and eax, 0xff00ff00
rol edx, 8
and edx, 0xff00ff
mov dword [ebp - 0x30], esi
or eax, edx
mov edx, dword [ebp - 0x28]
or ecx, eax
mov eax, dword [ebp - 0x2c]
mov esi, eax
mov dword [ebp - 0x34], ecx
rol eax, 8
xor ecx, ecx
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
or esi, eax
mov eax, edx
ror eax, 8
rol edx, 8
and eax, 0xff00ff00
and edx, 0xff00ff
mov dword [ebp - 0x28], esi
or eax, edx
lea edx, [ebp - 0x44]
or ecx, eax
mov dword [ebp - 0x2c], ecx
lea ecx, [ebp - 0x24]
movups xmm1, xmmword [ebp - 0x34]
pxor xmm1, xmm0
movups xmmword [ebp - 0x24], xmm1
call fcn.004cb4d0
add edi, 0x10
sub ebx, 1
jne 0x4cb350
mov esi, dword [ebp + 0x10]
mov dword [ebp + 0xc], edi
mov edi, dword [ebp - 0xc]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x4cb449
push eax
push edx
lea eax, [ebp - 0x34]
xorps xmm0, xmm0
push eax
movups xmmword [ebp - 0x34], xmm0
call fcn.0041d170
add esp, 8
lea edx, [ebp - 0x34]
mov ecx, edx
call fcn.004cd340
movups xmm0, xmmword [ebp - 0x24]
add esp, 4
lea edx, [ebp - 0x44]
movups xmm1, xmmword [ebp - 0x34]
lea ecx, [ebp - 0x24]
pxor xmm1, xmm0
movups xmmword [ebp - 0x24], xmm1
call fcn.004cb4d0
mov eax, dword [ebp + 8]
mov dword [ebp - 0x34], eax
mov eax, dword [edi + 0x144]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x28], 0
test eax, eax
je 0x4cb474
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], 0
movups xmm1, xmmword [ebp - 0x34]
mov eax, 3
lea edx, [ebp - 0x44]
lea ecx, [ebp - 0x24]
movd xmm0, eax
psllq xmm1, xmm0
movups xmm0, xmmword [ebp - 0x24]
pxor xmm1, xmm0
movups xmmword [ebp - 0x24], xmm1
call fcn.004cb4d0
lea edx, [ebp - 0x24]
push ecx
mov ecx, edx
call fcn.004cd340
add esp, 4
lea eax, [ebp - 0x24]
push dword [ebp + 0x18]
push eax
push dword [ebp + 0x14]
call fcn.0041d170
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret