Function at 0x4b1210
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x40
mov ebx, dword [ebp + 0x10]
test ebx, ebx
je 0x4b172a
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
cmp esi, 0x20
setae al
lea ecx, [esi - 0x20]
cmp ecx, edx
mov edi, dword [ebp + 0x18]
xorps xmm0, xmm0
movaps xmmword [esp + 0x20], xmm0
setae cl
cmp esi, edx
jb 0x4b12ee
and al, cl
jne 0x4b12ee
cmp ebx, 0x10
jb 0x4b1347
mov ecx, dword [ebp + 0x14]
nop word cs:[eax + eax]
nop dword [eax]
mov dword [esp + 0x10], esi
push ecx
lea eax, [esp + 0x24]
push eax
push esi
mov esi, edi
mov edi, ebx
mov ebx, edx
call dword [ebp + 0x1c]
mov edx, ebx
mov ebx, edi
mov edi, esi
mov esi, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esi]
mov ecx, dword [edi]
xor ecx, dword [esp + 0x20]
mov dword [edx], ecx
mov dword [edi], eax
mov eax, dword [esi + 4]
mov ecx, dword [edi + 4]
xor ecx, dword [esp + 0x24]
mov dword [edx + 4], ecx
mov dword [edi + 4], eax
mov eax, dword [esi + 8]
mov ecx, dword [edi + 8]
xor ecx, dword [esp + 0x28]
mov dword [edx + 8], ecx
mov dword [edi + 8], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [edi + 0xc]
xor ecx, dword [esp + 0x2c]
mov dword [edx + 0xc], ecx
mov ecx, dword [ebp + 0x14]
mov dword [edi + 0xc], eax
mov eax, dword [ebp + 0x1c]
add ebx, 0xfffffff0
add esi, 0x10
add edx, 0x10
cmp ebx, 0xf
ja 0x4b1270
test ebx, ebx
jne 0x4b1365
jmp 0x4b172a
cmp ebx, 0x10
jb 0x4b134f
mov ecx, esi
mov esi, ebx
mov ebx, edi
nop dword [eax]
mov dword [esp + 8], edx
mov edi, ecx
push dword [ebp + 0x14]
push edx
push ecx
call dword [ebp + 0x1c]
mov edx, dword [esp + 0x14]
add esp, 0xc
mov eax, dword [ebx]
xor dword [edx], eax
mov eax, dword [ebx + 4]
xor dword [edx + 4], eax
mov eax, dword [ebx + 8]
xor dword [edx + 8], eax
mov eax, dword [ebx + 0xc]
xor dword [edx + 0xc], eax
add esi, 0xfffffff0
lea ecx, [edi + 0x10]
add edx, 0x10
mov ebx, edi
cmp esi, 0xf
ja 0x4b1300
lea eax, [ecx - 0x10]
mov edi, dword [ebp + 0x18]
mov ebx, esi
mov esi, ecx
jmp 0x4b1351
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x14]
jmp 0x4b1365
mov eax, edi
movups xmm0, xmmword [eax]
movups xmmword [edi], xmm0
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x14]
test ebx, ebx
je 0x4b172a
mov dword [esp + 8], edx
lea edx, [esp + 0x20]
push ecx
push edx
push esi
call eax
add esp, 0xc
xor eax, eax
cmp ebx, 8
mov dword [esp + 0x10], esi
jae 0x4b1510
mov ecx, eax
or ecx, 1
test bl, 1
mov esi, edi
je 0x4b13b0
mov edx, dword [esp + 0x10]
mov dl, byte [edx + eax]
mov dh, byte [edi + eax]
xor dh, byte [esp + eax + 0x20]
mov edi, ebx
mov ebx, dword [esp + 8]
mov byte [ebx + eax], dh
mov ebx, edi
mov edi, esi
mov byte [esi + eax], dl
mov eax, ecx
cmp ebx, ecx
mov ecx, dword [esp + 0x10]
je 0x4b13f9
nop dword [eax + eax]
mov dh, byte [ecx + eax]
mov dl, byte [edi + eax]
xor dl, byte [esp + eax + 0x20]
mov edi, ebx
mov ebx, dword [esp + 8]
mov byte [ebx + eax], dl
mov byte [esi + eax], dh
mov dh, byte [ecx + eax + 1]
mov dl, byte [esi + eax + 1]
xor dl, byte [esp + eax + 0x21]
mov ebx, dword [esp + 8]
mov byte [ebx + eax + 1], dl
mov ebx, edi
mov edi, esi
mov byte [esi + eax + 1], dh
add eax, 2
cmp ebx, eax
jne 0x4b13c0
cmp ebx, 0xf
ja 0x4b172a
mov esi, ecx
mov eax, 0x10
sub eax, ebx
cmp eax, 8
jb 0x4b16cd
mov dword [esp + 0xc], eax
lea ecx, [edi + ebx]
lea edx, [esi + ebx]
lea eax, [esi + 0x10]
cmp ecx, eax
jae 0x4b1430
lea eax, [edi + 0x10]
cmp edx, eax
jb 0x4b16cd
mov dword [esp + 0x38], edx
mov dword [esp + 0x18], ecx
xor edx, edx
mov eax, dword [esp + 0xc]
cmp eax, 0x10
jb 0x4b168d
mov dword [esp + 0x1c], ebx
mov edx, eax
and edx, 0xfffffff0
lea eax, [edx - 0x10]
mov ecx, eax
shr ecx, 4
add ecx, 1
mov esi, ecx
and esi, 3
mov dword [esp + 8], esi
xor esi, esi
cmp eax, 0x30
jb 0x4b14be
and ecx, 0xfffffffc
mov esi, dword [esp + 0x1c]
lea eax, [edi + esi]
add eax, 0x30
mov ebx, dword [esp + 0x10]
add ebx, esi
add ebx, 0x30
xor esi, esi
nop word cs:[eax + eax]
nop dword [eax]
movups xmm0, xmmword [ebx + esi - 0x30]
movups xmmword [eax + esi - 0x30], xmm0
movups xmm0, xmmword [ebx + esi - 0x20]
movups xmmword [eax + esi - 0x20], xmm0
movups xmm0, xmmword [ebx + esi - 0x10]
movups xmmword [eax + esi - 0x10], xmm0
movups xmm0, xmmword [ebx + esi]
movups xmmword [eax + esi], xmm0
add esi, 0x40
add ecx, 0xfffffffc
jne 0x4b1490
cmp dword [esp + 8], 0
mov ebx, dword [esp + 0x1c]
je 0x4b14f1
add esi, ebx
lea eax, [edi + esi]
add esi, dword [esp + 0x10]
shl dword [esp + 8], 4
xor ecx, ecx
nop dword [eax]
movups xmm0, xmmword [esi + ecx]
movups xmmword [eax + ecx], xmm0
add ecx, 0x10
cmp dword [esp + 8], ecx
jne 0x4b14e0
mov eax, dword [esp + 0xc]
cmp eax, edx
mov esi, dword [esp + 0x10]
je 0x4b172a
test al, 8
jne 0x4b168d
add ebx, edx
jmp 0x4b16cd
mov ecx, dword [esp + 8]
lea edx, [ecx + ebx]
mov dword [esp + 0x34], edx
mov edx, ebx
mov ebx, dword [ebp + 0x18]
lea edi, [ebx + edx]
mov dword [esp + 0x38], edi
lea ebx, [esi + edx]
cmp ecx, edi
setb byte [esp + 0xc]
mov edi, dword [esp + 0x34]
cmp edi, dword [ebp + 0x18]
seta byte [esp + 0x18]
cmp ecx, ebx
setb byte [esp + 0x17]
cmp esi, edi
setb byte [esp + 0x16]
mov dword [esp + 0x1c], edx
add edx, esp
add edx, 0x20
cmp ecx, edx
setb byte [esp + 0x15]
lea ecx, [esp + 0x20]
cmp edi, ecx
mov edi, dword [ebp + 0x18]
seta byte [esp + 0x34]
cmp ebx, edi
seta ch
mov ebx, dword [esp + 0x38]
cmp esi, ebx
setb byte [esp + 0x14]
cmp edx, edi
seta dl
lea esi, [esp + 0x20]
cmp ebx, esi
seta cl
mov dh, byte [esp + 0x18]
test byte [esp + 0xc], dh
jne 0x4b17c2
mov dh, byte [esp + 0x16]
and byte [esp + 0x17], dh
mov ebx, dword [esp + 0x1c]
jne 0x4b1384
mov dh, byte [esp + 0x34]
and byte [esp + 0x15], dh
mov esi, dword [esp + 0x10]
jne 0x4b1384
and ch, byte [esp + 0x14]
jne 0x4b1384
and dl, cl
mov edx, dword [esp + 8]
jne 0x4b1384
mov ecx, esi
xor eax, eax
cmp ebx, 0x20
jb 0x4b1786
mov esi, ecx
mov eax, ebx
and eax, 0xffffffe0
lea ecx, [eax - 0x20]
mov edx, ecx
shr edx, 5
add edx, 1
test ecx, ecx
mov dword [esp + 0x18], edx
je 0x4b1732
and edx, 0xfffffffe
xor ecx, ecx
nop
mov dword [esp + 0xc], edx
movups xmm0, xmmword [esi + ecx]
movups xmm1, xmmword [esi + ecx + 0x10]
movups xmm2, xmmword [esp + ecx + 0x20]
movups xmm3, xmmword [esp + ecx + 0x30]
movups xmm4, xmmword [edi + ecx]
xorps xmm4, xmm2
movups xmm2, xmmword [edi + ecx + 0x10]
xorps xmm2, xmm3
mov edx, esi
mov esi, dword [esp + 8]
movups xmmword [esi + ecx], xmm4
movups xmmword [esi + ecx + 0x10], xmm2
movups xmmword [edi + ecx], xmm0
movups xmmword [edi + ecx + 0x10], xmm1
movups xmm0, xmmword [edx + ecx + 0x20]
movups xmm1, xmmword [edx + ecx + 0x30]
movups xmm2, xmmword [esp + ecx + 0x40]
movups xmm3, xmmword [esp + ecx + 0x50]
movups xmm4, xmmword [edi + ecx + 0x20]
xorps xmm4, xmm2
movups xmm2, xmmword [edi + ecx + 0x30]
xorps xmm2, xmm3
movups xmmword [esi + ecx + 0x20], xmm4
movups xmmword [esi + ecx + 0x30], xmm2
mov esi, edx
mov edx, dword [esp + 0xc]
movups xmmword [edi + ecx + 0x20], xmm0
movups xmmword [edi + ecx + 0x30], xmm1
add ecx, 0x40
add edx, 0xfffffffe
jne 0x4b1600
jmp 0x4b1734
mov eax, 0x10
sub eax, ebx
mov dword [esp + 0xc], eax
and eax, 0xfffffff8
mov dword [esp + 8], eax
add ebx, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
nop dword [eax]
movsd xmm0, qword [ecx + edx]
movsd qword [eax + edx], xmm0
add edx, 8
cmp dword [esp + 8], edx
jne 0x4b16b0
mov eax, dword [esp + 8]
cmp dword [esp + 0xc], eax
je 0x4b172a
mov ecx, ebx
neg ecx
mov eax, ebx
and ecx, 3
je 0x4b16ef
mov eax, ebx
nop word [eax + eax]
movzx edx, byte [esi + eax]
mov byte [edi + eax], dl
add eax, 1
add ecx, 0xffffffff
jne 0x4b16e0
add ebx, 0xfffffff3
cmp ebx, 3
jb 0x4b172a
nop word [eax + eax]
movzx ecx, byte [esi + eax]
mov byte [edi + eax], cl
movzx ecx, byte [esi + eax + 1]
mov byte [edi + eax + 1], cl
movzx ecx, byte [esi + eax + 2]
mov byte [edi + eax + 2], cl
movzx ecx, byte [esi + eax + 3]
mov byte [edi + eax + 3], cl
add eax, 4
cmp eax, 0x10
jne 0x4b1700
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
test byte [esp + 0x18], 1
mov edx, dword [esp + 8]
je 0x4b1773
movups xmm0, xmmword [esi + ecx]
movups xmm1, xmmword [esi + ecx + 0x10]
movups xmm2, xmmword [esp + ecx + 0x20]
movups xmm3, xmmword [esp + ecx + 0x30]
movups xmm4, xmmword [edi + ecx]
xorps xmm4, xmm2
movups xmm2, xmmword [edi + ecx + 0x10]
xorps xmm2, xmm3
movups xmmword [edx + ecx], xmm4
movups xmmword [edx + ecx + 0x10], xmm2
movups xmmword [edi + ecx], xmm0
movups xmmword [edi + ecx + 0x10], xmm1
cmp ebx, eax
mov ecx, esi
je 0x4b13f9
test bl, 0x18
je 0x4b1384
mov esi, ecx
mov ecx, eax
mov eax, ebx
and eax, 0xfffffff8
nop
movsd xmm0, qword [esi + ecx]
movsd xmm1, qword [esp + ecx + 0x20]
movsd xmm2, qword [edi + ecx]
xorps xmm2, xmm1
movlps qword [edx + ecx], xmm2
movsd qword [edi + ecx], xmm0
add ecx, 8
cmp eax, ecx
jne 0x4b1790
cmp ebx, eax
mov ecx, esi
jne 0x4b1384
jmp 0x4b13f9
mov ebx, dword [esp + 0x1c]
jmp 0x4b1384