Function at 0x4b4060
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
cmp dword [eax + 0xc], 0
mov ecx, dword [edx + 0xc]
je 0x4b4084
test ecx, ecx
je 0x4b40ee
mov ecx, eax
jmp 0x4b408e
xor esi, esi
test ecx, ecx
jne 0x4b40f3
mov ecx, edx
mov edx, eax
mov ebp, dword [edx]
mov edi, dword [edx + 4]
mov eax, dword [ecx]
mov dword [esp], eax
mov eax, dword [ecx + 4]
cmp edi, eax
mov esi, eax
mov dword [esp + 0x10], eax
cmovb eax, edi
test eax, eax
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 0x1c], edi
je 0x4b412f
xor edx, edx
xor esi, esi
nop word [eax + eax]
mov ebx, dword [ebp + esi*4]
mov ecx, dword [esp]
mov ecx, dword [ecx + esi*4]
mov edi, ebp
mov ebp, ebx
sub ebp, ecx
xor ecx, ebx
xor ebp, ebx
or ebp, ecx
xor ebp, ebx
sar ebp, 0x1f
or ebp, 1
test ecx, ecx
cmovne edx, ebp
mov ebp, edi
add esi, 1
cmp eax, esi
jne 0x4b40c0
jmp 0x4b4131
mov esi, 1
push edx
push eax
push ebx
call fcn.004b3490
add esp, 0xc
test eax, eax
je 0x4b44e9
mov ecx, dword [ebx + 4]
xor eax, eax
test ecx, ecx
cmovs eax, ecx
test ecx, ecx
jle 0x4b4127
mov edi, dword [ebx]
lea edx, [ecx - 1]
cmp dword [edi + ecx*4 - 4], 0
mov ecx, edx
je 0x4b4110
add edx, 1
mov eax, edx
mov dword [ebx + 4], eax
jmp 0x4b44df
xor edx, edx
mov dword [esp + 4], edx
mov edi, dword [esp + 0x1c]
mov edx, edi
mov ecx, dword [esp + 0x10]
sub edx, ecx
jae 0x4b415b
mov edx, ecx
sub edx, edi
xor eax, eax
cmp edx, 8
jae 0x4b417b
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 8]
jmp 0x4b42ea
jbe 0x4b41b0
xor eax, eax
cmp edx, 8
mov dword [esp + 0x18], ebp
jae 0x4b41cd
mov esi, edi
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x4b445f
mov eax, edx
and eax, 0xfffffff8
mov dword [esp + 0x18], eax
add eax, 0xfffffff8
mov esi, eax
shr esi, 3
add esi, 1
mov ebx, esi
and ebx, 3
cmp eax, 0x18
mov dword [esp + 0x14], ebx
jae 0x4b41fd
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
mov ebx, dword [esp + 0x34]
jmp 0x4b4278
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 4]
test esi, esi
jns 0x4b4326
jmp 0x4b4499
mov eax, edx
and eax, 0xfffffff8
mov dword [esp], eax
add eax, 0xfffffff8
mov ecx, eax
shr ecx, 3
add ecx, 1
mov ebx, ecx
and ebx, 3
cmp eax, 0x18
jae 0x4b4371
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x4b43e7
and esi, 0xfffffffc
mov eax, dword [esp]
lea ebp, [eax + edi*4]
add ebp, 0x70
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
mov ebx, dword [esp + 0x34]
nop word [eax + eax]
movdqu xmm2, xmmword [ebp + eax*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + eax*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebp + eax*4 - 0x50]
movdqu xmm3, xmmword [ebp + eax*4 - 0x40]
movdqu xmm4, xmmword [ebp + eax*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebp + eax*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + eax*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebp + eax*4]
por xmm1, xmm2
add eax, 0x20
add esi, 0xfffffffc
jne 0x4b4220
mov ebp, dword [esp + 0x14]
test ebp, ebp
je 0x4b42ba
add eax, edi
mov esi, edx
mov edx, dword [esp]
lea eax, [edx + eax*4]
add eax, 0x10
mov edx, esi
shl ebp, 5
xor esi, esi
nop word cs:[eax + eax]
nop
movdqu xmm2, xmmword [eax + esi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + esi]
por xmm1, xmm2
add esi, 0x20
cmp ebp, esi
jne 0x4b42a0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd eax, xmm0
mov esi, dword [esp + 0x18]
cmp edx, esi
mov ebp, dword [esp + 8]
jne 0x4b42e6
mov esi, dword [esp + 4]
jmp 0x4b430a
mov edx, esi
add edi, esi
mov edx, dword [esp]
mov esi, dword [esp + 4]
nop word cs:[eax + eax]
nop dword [eax + eax]
or eax, dword [edx + edi*4]
add edi, 1
cmp ecx, edi
jne 0x4b4300
mov ecx, eax
not ecx
add eax, 0xffffffff
and eax, ecx
sar eax, 0x1f
not eax
or esi, eax
mov edx, dword [esp + 0xc]
test esi, esi
js 0x4b4499
push ebp
push edx
push ebx
call fcn.004b4500
add esp, 0xc
test eax, eax
je 0x4b44e9
mov ecx, dword [ebx + 4]
xor eax, eax
test ecx, ecx
cmovs eax, ecx
nop word cs:[eax + eax]
nop dword [eax]
test ecx, ecx
jle 0x4b4367
mov esi, dword [ebx]
lea edx, [ecx - 1]
cmp dword [esi + ecx*4 - 4], 0
mov ecx, edx
je 0x4b4350
add edx, 1
mov eax, edx
mov dword [ebx + 4], eax
xor esi, esi
jmp 0x4b44df
and ecx, 0xfffffffc
mov eax, dword [esp + 0x10]
lea eax, [eax*4 + 0x70]
add eax, ebp
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop dword [eax + eax]
movdqu xmm2, xmmword [eax + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [eax + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [eax + esi*4 - 0x50]
movdqu xmm3, xmmword [eax + esi*4 - 0x40]
movdqu xmm4, xmmword [eax + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [eax + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [eax + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [eax + esi*4]
por xmm1, xmm2
add esi, 0x20
add ecx, 0xfffffffc
jne 0x4b4390
mov dword [esp + 0x14], edx
test ebx, ebx
mov edx, ebx
mov ebx, dword [esp + 0x34]
je 0x4b442a
add esi, dword [esp + 0x10]
lea eax, [esi*4 + 0x10]
add eax, ebp
shl edx, 5
xor ecx, ecx
nop word [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 0x4b4410
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd eax, xmm0
mov ecx, dword [esp]
cmp dword [esp + 0x14], ecx
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
je 0x4b447a
mov esi, edi
mov edi, ecx
mov ecx, dword [esp + 0x10]
add ecx, edi
mov edi, dword [esp + 0x18]
nop word cs:[eax + eax]
nop dword [eax]
or eax, dword [edi + ecx*4]
add ecx, 1
cmp esi, ecx
jne 0x4b4470
mov ecx, eax
not ecx
add eax, 0xffffffff
and eax, ecx
sar eax, 0x1f
mov esi, dword [esp + 4]
and esi, eax
add esi, eax
add esi, 1
test esi, esi
jns 0x4b4326
push edx
push ebp
push ebx
call fcn.004b4500
add esp, 0xc
test eax, eax
je 0x4b44e9
mov ecx, dword [ebx + 4]
xor eax, eax
test ecx, ecx
cmovs eax, ecx
nop word cs:[eax + eax]
nop dword [eax]
test ecx, ecx
jle 0x4b44d7
mov esi, dword [ebx]
lea edx, [ecx - 1]
cmp dword [esi + ecx*4 - 4], 0
mov ecx, edx
je 0x4b44c0
add edx, 1
mov eax, edx
mov dword [ebx + 4], eax
mov esi, 1
mov dword [ebx + 0xc], esi
mov eax, 1
jmp 0x4b44eb
xor eax, eax
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret