Function at 0x4b2c20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
mov esi, dword [ecx + 0xc]
cmp esi, dword [eax + 0xc]
jne 0x4b2c7f
push eax
push ecx
push ebx
call fcn.004b3490
add esp, 0xc
test eax, eax
je 0x4b2ced
mov ecx, dword [ebx + 4]
xor eax, eax
test ecx, ecx
cmovs eax, ecx
nop dword [eax + eax]
test ecx, ecx
jle 0x4b2c77
mov edi, dword [ebx]
lea edx, [ecx - 1]
cmp dword [edi + ecx*4 - 4], 0
mov ecx, edx
je 0x4b2c60
add edx, 1
mov eax, edx
mov dword [ebx + 4], eax
jmp 0x4b306f
test esi, esi
mov edx, eax
cmove edx, ecx
cmove ecx, eax
mov ebx, 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], ecx
mov dword [esp + 8], edx
mov dword [esp + 0x1c], edi
je 0x4b2cf4
xor edx, edx
xor esi, esi
nop word cs:[eax + eax]
nop
mov edi, ebx
mov ebx, dword [ebx + esi*4]
mov ecx, dword [esp]
mov ecx, dword [ecx + esi*4]
mov ebp, ebx
sub ebp, ecx
xor ecx, ebx
xor ebp, ebx
or ebp, ecx
xor ebp, ebx
mov ebx, edi
sar ebp, 0x1f
or ebp, 1
test ecx, ecx
cmovne edx, ebp
add esi, 1
cmp eax, esi
jne 0x4b2cc0
jmp 0x4b2cf6
xor eax, eax
jmp 0x4b3074
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 0x4b2d20
mov edx, ecx
sub edx, edi
xor eax, eax
cmp edx, 8
jae 0x4b2d40
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 8]
jmp 0x4b2e98
jbe 0x4b2d75
xor eax, eax
cmp edx, 8
mov dword [esp + 0x18], ebx
jae 0x4b2d92
mov esi, edi
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x4b2ff2
mov esi, edx
and esi, 0xfffffff8
lea eax, [esi - 8]
mov ebp, eax
shr ebp, 3
add ebp, 1
mov ebx, ebp
and ebx, 3
mov dword [esp + 0x14], ebx
cmp eax, 0x18
mov dword [esp + 0x18], esi
jae 0x4b2dc6
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
mov ebx, dword [esp + 0x34]
jmp 0x4b2e37
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 4]
test esi, esi
jns 0x4b2ec6
jmp 0x4b3029
mov eax, edx
and eax, 0xfffffff8
mov dword [esp + 0x14], eax
lea ecx, [eax - 8]
mov eax, ecx
shr eax, 3
add eax, 1
mov esi, eax
and esi, 3
mov dword [esp], esi
cmp ecx, 0x18
jae 0x4b2f16
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x4b2f87
and ebp, 0xfffffffc
mov eax, dword [esp]
lea eax, [eax + edi*4]
add eax, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
mov ebx, dword [esp + 0x34]
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 ebp, 0xfffffffc
jne 0x4b2de0
mov ebp, dword [esp + 0x14]
test ebp, ebp
je 0x4b2e6a
add esi, edi
mov eax, dword [esp]
lea eax, [eax + esi*4]
add eax, 0x10
shl ebp, 5
xor esi, esi
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 0x4b2e50
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 0x4b2e96
mov esi, dword [esp + 4]
jmp 0x4b2eaa
add edi, esi
mov edx, dword [esp]
mov esi, dword [esp + 4]
nop
or eax, dword [edx + edi*4]
add edi, 1
cmp ecx, edi
jne 0x4b2ea0
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 0x4b3029
push edx
push ebp
push ebx
call fcn.004b4500
add esp, 0xc
test eax, eax
je 0x4b307f
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 0x4b2f07
mov esi, dword [ebx]
lea edx, [ecx - 1]
cmp dword [esi + ecx*4 - 4], 0
mov ecx, edx
je 0x4b2ef0
add edx, 1
mov eax, edx
mov dword [ebx + 4], eax
mov eax, 1
xor esi, esi
jmp 0x4b3074
and eax, 0xfffffffc
mov ecx, dword [esp + 0x10]
lea ecx, [ebx + ecx*4]
add ecx, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop dword [eax]
movdqu xmm2, xmmword [ecx + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ecx + esi*4 - 0x50]
movdqu xmm3, xmmword [ecx + esi*4 - 0x40]
movdqu xmm4, xmmword [ecx + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ecx + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ecx + esi*4]
por xmm1, xmm2
add esi, 0x20
add eax, 0xfffffffc
jne 0x4b2f30
mov ebp, dword [esp]
test ebp, ebp
je 0x4b2fba
add esi, dword [esp + 0x10]
lea eax, [ebx + esi*4]
add eax, 0x10
shl ebp, 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 ebp, ecx
jne 0x4b2fa0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd eax, xmm0
mov ecx, dword [esp + 0x14]
cmp edx, ecx
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
je 0x4b300a
mov esi, edi
mov edi, ecx
mov ecx, dword [esp + 0x10]
add ecx, edi
mov edi, dword [esp + 0x18]
nop word cs:[eax + eax]
or eax, dword [edi + ecx*4]
add ecx, 1
cmp esi, ecx
jne 0x4b3000
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 0x4b2ec6
push ebp
push edx
push ebx
call fcn.004b4500
add esp, 0xc
test eax, eax
je 0x4b307f
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 0x4b3067
mov esi, dword [ebx]
lea edx, [ecx - 1]
cmp dword [esi + ecx*4 - 4], 0
mov ecx, edx
je 0x4b3050
add edx, 1
mov eax, edx
mov dword [ebx + 4], eax
mov esi, 1
mov eax, 1
mov dword [ebx + 0xc], esi
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
jmp 0x4b3077