Function at 0x4b0560
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov ebx, dword [ecx]
test ebx, ebx
je 0x4b05b2
test eax, eax
je 0x4b05b2
nop word cs:[eax + eax]
nop
movzx ecx, byte [edx + ebx]
xor cl, byte [edi]
add edi, 1
mov byte [esi], cl
add esi, 1
lea ecx, [eax - 1]
add ebx, 1
and ebx, 0xf
je 0x4b05b4
cmp eax, 1
mov eax, ecx
jne 0x4b0590
jmp 0x4b05b4
mov ecx, eax
mov dword [esp + 0x10], ebx
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0xc]
bswap eax
mov dword [esp + 0xc], eax
mov ebp, esi
mov esi, edi
cmp ecx, 0x10
jae 0x4b07a7
mov dword [esp + 4], esi
mov dword [esp + 8], ebp
test ecx, ecx
je 0x4b087a
mov dword [esp], ecx
xorps xmm0, xmm0
mov edi, dword [esp + 0x3c]
movups xmmword [edi], xmm0
push dword [esp + 0x38]
push dword [esp + 0x38]
push 1
push edi
push edi
call dword [esp + 0x58]
mov edx, dword [esp + 0x4c]
add esp, 0x14
mov eax, dword [esp + 0xc]
inc eax
bswap eax
mov dword [edx + 0xc], eax
mov ebp, dword [esp + 0x10]
jne 0x4b069e
movzx eax, byte [edx + 0xb]
add eax, 1
mov byte [edx + 0xb], al
shr eax, 8
movzx ecx, byte [edx + 0xa]
add ecx, eax
mov byte [edx + 0xa], cl
shr ecx, 8
movzx eax, byte [edx + 9]
add eax, ecx
mov byte [edx + 9], al
shr eax, 8
movzx ecx, byte [edx + 8]
add ecx, eax
mov byte [edx + 8], cl
shr ecx, 8
movzx eax, byte [edx + 7]
add eax, ecx
mov byte [edx + 7], al
shr eax, 8
movzx ecx, byte [edx + 6]
add ecx, eax
mov byte [edx + 6], cl
shr ecx, 8
movzx eax, byte [edx + 5]
add eax, ecx
mov byte [edx + 5], al
shr eax, 8
movzx ecx, byte [edx + 4]
add ecx, eax
mov byte [edx + 4], cl
shr ecx, 8
movzx eax, byte [edx + 3]
add eax, ecx
mov byte [edx + 3], al
shr eax, 8
movzx ecx, byte [edx + 2]
add ecx, eax
mov byte [edx + 2], cl
shr ecx, 8
movzx eax, byte [edx + 1]
add eax, ecx
mov byte [edx + 1], al
add byte [edx], ah
mov ecx, dword [esp]
cmp ecx, 0x20
mov esi, dword [esp + 8]
mov ebx, dword [esp + 4]
jb 0x4b088e
lea eax, [esi + ebp]
add ecx, ebp
lea edx, [esi + ecx]
lea edi, [ebx + ecx]
add ecx, dword [esp + 0x3c]
cmp eax, edi
lea edi, [ebx + ebp]
setb bl
cmp edi, edx
mov edi, dword [esp + 0x3c]
setb bh
cmp eax, ecx
lea ecx, [edi + ebp]
setb al
cmp ecx, edx
setb cl
test bl, bh
jne 0x4b0883
and al, cl
jne 0x4b0883
mov ecx, dword [esp]
and ecx, 0xffffffe0
lea eax, [ecx - 0x20]
mov edx, eax
shr edx, 5
add edx, 1
test eax, eax
mov dword [esp + 0xc], ecx
je 0x4b08a1
mov eax, edi
mov esi, edx
mov edi, edx
and edi, 0xfffffffe
mov ecx, dword [esp + 8]
lea ebx, [ecx + ebp]
add ebx, 0x30
add eax, ebp
add eax, 0x30
mov ecx, dword [esp + 4]
lea edx, [ecx + ebp]
add edx, 0x30
xor ecx, ecx
movups xmm0, xmmword [edx + ecx - 0x30]
movups xmm1, xmmword [edx + ecx - 0x20]
movups xmm2, xmmword [eax + ecx - 0x30]
xorps xmm2, xmm0
movups xmm0, xmmword [eax + ecx - 0x20]
xorps xmm0, xmm1
movups xmmword [ebx + ecx - 0x30], xmm2
movups xmmword [ebx + ecx - 0x20], xmm0
movups xmm0, xmmword [edx + ecx - 0x10]
movups xmm1, xmmword [edx + ecx]
movups xmm2, xmmword [eax + ecx - 0x10]
xorps xmm2, xmm0
movups xmm0, xmmword [eax + ecx]
xorps xmm0, xmm1
movups xmmword [ebx + ecx - 0x10], xmm2
movups xmmword [ebx + ecx], xmm0
add ecx, 0x40
add edi, 0xfffffffe
jne 0x4b0730
jmp 0x4b08a5
shl ebx, 4
mov eax, dword [esp]
sub eax, ebx
add ebp, ebx
add esi, ebx
cmp eax, 0xf
mov ecx, eax
jbe 0x4b05d2
mov dword [esp], ecx
mov eax, ecx
shr eax, 4
mov edi, dword [esp + 0xc]
mov ebx, edi
neg ebx
add edi, eax
mov edx, esi
mov esi, ebp
mov ebp, 0
cmovb edi, ebp
mov ebp, esi
mov esi, edx
cmovae ebx, eax
push dword [esp + 0x38]
push dword [esp + 0x38]
push ebx
push ebp
push edx
call dword [esp + 0x58]
mov edx, dword [esp + 0x4c]
add esp, 0x14
mov eax, edi
bswap eax
mov dword [edx + 0xc], eax
mov dword [esp + 0xc], edi
test edi, edi
jne 0x4b0790
movzx eax, byte [edx + 0xb]
add eax, 1
mov byte [edx + 0xb], al
shr eax, 8
movzx ecx, byte [edx + 0xa]
add ecx, eax
mov byte [edx + 0xa], cl
shr ecx, 8
movzx eax, byte [edx + 9]
add eax, ecx
mov byte [edx + 9], al
shr eax, 8
movzx ecx, byte [edx + 8]
add ecx, eax
mov byte [edx + 8], cl
shr ecx, 8
movzx eax, byte [edx + 7]
add eax, ecx
mov byte [edx + 7], al
shr eax, 8
movzx ecx, byte [edx + 6]
add ecx, eax
mov byte [edx + 6], cl
shr ecx, 8
movzx eax, byte [edx + 5]
add eax, ecx
mov byte [edx + 5], al
shr eax, 8
movzx ecx, byte [edx + 4]
add ecx, eax
mov byte [edx + 4], cl
shr ecx, 8
movzx eax, byte [edx + 3]
add eax, ecx
mov byte [edx + 3], al
shr eax, 8
movzx ecx, byte [edx + 2]
add ecx, eax
mov byte [edx + 2], cl
shr ecx, 8
movzx eax, byte [edx + 1]
add eax, ecx
mov byte [edx + 1], al
add byte [edx], ah
jmp 0x4b0790
mov ecx, dword [esp + 0x10]
jmp 0x4b0931
mov esi, dword [esp + 8]
mov ebx, dword [esp + 4]
mov ecx, dword [esp]
test cl, 1
jne 0x4b08f3
mov edx, ecx
mov eax, edx
cmp edx, 1
jne 0x4b0910
jmp 0x4b0931
mov esi, edx
xor ecx, ecx
mov eax, esi
test al, 1
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 8]
mov ebx, dword [esp + 4]
je 0x4b08da
add ecx, ebp
movups xmm0, xmmword [ebx + ecx]
movups xmm1, xmmword [ebx + ecx + 0x10]
movups xmm2, xmmword [edi + ecx]
xorps xmm2, xmm0
movups xmm0, xmmword [edi + ecx + 0x10]
xorps xmm0, xmm1
movups xmmword [esi + ecx], xmm2
movups xmmword [esi + ecx + 0x10], xmm0
mov eax, dword [esp + 0xc]
add ebp, eax
mov ecx, dword [esp]
cmp ecx, eax
jne 0x4b08eb
mov ecx, ebp
jmp 0x4b0931
and ecx, 0x1f
test cl, 1
je 0x4b0893
lea eax, [ecx - 1]
mov edx, ecx
mov cl, byte [edi + ebp]
xor cl, byte [ebx + ebp]
mov byte [esi + ebp], cl
add ebp, 1
mov ecx, ebp
cmp edx, 1
je 0x4b0931
nop dword [eax + eax]
movzx ecx, byte [edi + ebp]
xor cl, byte [ebx + ebp]
mov byte [esi + ebp], cl
movzx edx, byte [edi + ebp + 1]
xor dl, byte [ebx + ebp + 1]
lea ecx, [ebp + 2]
mov byte [esi + ebp + 1], dl
mov ebp, ecx
add eax, 0xfffffffe
jne 0x4b0910
mov eax, dword [esp + 0x40]
mov dword [eax], ecx
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret