Function at 0x45d880
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
push edi
mov edi, edx
mov ebp, ecx
push 0
mov dword [esp + 0x14], edi
xor bl, bl
call fcn.00418e30
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45d8c0
test ecx, ecx
je 0x45d8b1
lea edx, [ecx - 1]
test ecx, edx
jne 0x45d8b1
and edx, ebp
jmp 0x45d8b7
mov eax, ebp
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
je 0x45d8ef
push 0
call fcn.00418e30
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45d8f8
test ecx, ecx
je 0x45d8e0
lea edx, [ecx - 1]
test ecx, edx
jne 0x45d8e0
and edx, edi
jmp 0x45d8e6
mov eax, edi
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
jne 0x45d8f8
mov edx, dword [esp + 0x20]
jmp 0x45d9f1
mov edx, dword [esp + 0x20]
xor ebx, ebx
mov ecx, edx
mov dword [esp + 0x14], ebx
shr ecx, 2
xor esi, esi
test ecx, ecx
je 0x45d9bc
cmp ecx, 8
jb 0x45d988
mov ebx, ecx
lea eax, [edi + 0x10]
mov edx, ebp
and ebx, 0xfffffff8
sub edx, edi
xorps xmm3, xmm3
mov dword [esp + 0x14], edx
movaps xmm2, xmm3
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x20]
movups xmm1, xmmword [ebp + esi*4]
add esi, 8
pxor xmm1, xmm0
por xmm3, xmm1
movups xmm1, xmmword [edi + eax - 0x20]
movups xmm0, xmmword [eax - 0x20]
pxor xmm1, xmm0
por xmm2, xmm1
cmp esi, ebx
jb 0x45d934
mov edi, dword [esp + 0x10]
por xmm2, xmm3
movaps xmm0, xmm2
psrldq xmm0, 8
por xmm2, xmm0
movaps xmm0, xmm2
psrldq xmm0, 4
por xmm2, xmm0
movd ebx, xmm2
mov dword [esp + 0x14], ebx
cmp esi, ecx
jae 0x45d9bc
mov edx, ebp
lea edi, [edi + esi*4]
sub edx, dword [esp + 0x10]
sub ecx, esi
add esi, ecx
nop dword [eax]
mov eax, dword [edi + edx]
lea edi, [edi + 4]
xor eax, dword [edi - 4]
or ebx, eax
sub ecx, 1
jne 0x45d9a0
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
shl esi, 2
sub edx, esi
jne 0x45d9d2
pop edi
xor eax, eax
test ebx, ebx
pop esi
pop ebp
sete al
pop ebx
add esp, 0xc
ret
mov ecx, dword [esp + 0x14]
add edi, esi
shr ebx, 0x18
mov eax, ecx
shr eax, 0x10
add ebp, esi
or bl, al
mov dword [esp + 0x10], edi
mov eax, ecx
shr eax, 8
or bl, al
or bl, cl
xor esi, esi
test edx, edx
je 0x45dab0
cmp edx, 0x20
jb 0x45da8e
mov ecx, edx
xorps xmm3, xmm3
and ecx, 0xffffffe0
mov eax, edi
mov dword [esp + 0x14], ecx
movaps xmm2, xmm3
mov ecx, ebp
sub ecx, edi
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmm1, xmmword [eax + edi - 0x20]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x10]
por xmm3, xmm1
movups xmm1, xmmword [esi + ebp + 0x10]
add esi, 0x20
pxor xmm1, xmm0
por xmm2, xmm1
cmp esi, ecx
jb 0x45da25
por xmm2, xmm3
mov edi, dword [esp + 0x10]
movaps xmm0, xmm2
psrldq xmm0, 8
por xmm2, xmm0
movaps xmm0, xmm2
psrldq xmm0, 4
por xmm2, xmm0
movaps xmm0, xmm2
psrldq xmm0, 2
por xmm2, xmm0
movaps xmm0, xmm2
psrldq xmm0, 1
por xmm2, xmm0
movd eax, xmm2
or bl, al
cmp esi, edx
jae 0x45dab0
sub ebp, edi
lea ecx, [esi + edi]
sub edx, esi
nop dword [eax]
mov al, byte [ecx + ebp]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
or bl, al
sub edx, 1
jne 0x45daa0
pop edi
pop esi
test bl, bl
pop ebp
sete al
pop ebx
add esp, 0xc
ret