Function at 0x45d5a0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
push ebx
push ebp
push esi
push edi
mov ebx, edx
mov esi, ecx
push 0
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], esi
call fcn.00418e30
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45d5e2
test ecx, ecx
je 0x45d5d3
lea edx, [ecx - 1]
test ecx, edx
jne 0x45d5d3
and edx, esi
jmp 0x45d5d9
mov eax, esi
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
je 0x45d611
push 0
call fcn.00418e30
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45d622
test ecx, ecx
je 0x45d602
lea edx, [ecx - 1]
test ecx, edx
jne 0x45d602
and edx, ebx
jmp 0x45d608
mov eax, ebx
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
jne 0x45d622
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
mov dword [esp + 0x10], edx
jmp 0x45d79b
push 0
call fcn.00418e30
mov edi, dword [esp + 0x38]
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45d662
test ecx, ecx
je 0x45d646
lea edx, [ecx - 1]
test ecx, edx
jne 0x45d646
and edx, edi
jmp 0x45d64c
mov eax, edi
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
jne 0x45d662
mov edx, dword [esp + 0x38]
mov dword [esp + 0x10], edx
jmp 0x45d79b
mov edx, dword [esp + 0x38]
xor ecx, ecx
mov ebp, edx
mov dword [esp + 0x10], ecx
shr ebp, 2
mov dword [esp + 0x24], ebp
test ebp, ebp
je 0x45d77e
cmp ebp, 8
jb 0x45d736
lea eax, [edi - 4]
mov dword [esp + 0x10], ecx
lea eax, [eax + ebp*4]
cmp esi, eax
ja 0x45d6a2
lea eax, [esi - 4]
lea eax, [eax + ebp*4]
cmp eax, edi
jae 0x45d736
lea eax, [ebx - 4]
lea eax, [eax + ebp*4]
cmp esi, eax
ja 0x45d6ba
lea eax, [esi - 4]
lea eax, [eax + ebp*4]
cmp eax, ebx
jae 0x45d736
mov edx, ebx
mov eax, ebp
sub edx, edi
and eax, 0xfffffff8
mov dword [esp + 0x18], edx
mov edx, esi
sub edx, edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], edx
lea eax, [edi + 0x10]
mov ebp, dword [esp + 0x10]
mov edx, ebx
mov ebx, dword [esp + 0x18]
sub edx, esi
mov dword [esp + 0x1c], edx
mov edx, esi
mov edi, dword [esp + 0x1c]
nop dword [eax]
movups xmm0, xmmword [eax - 0x10]
add ecx, 8
lea edx, [edx + 0x20]
lea eax, [eax + 0x20]
movups xmm1, xmmword [edi + edx - 0x20]
pxor xmm1, xmm0
movups xmmword [edx - 0x20], xmm1
movups xmm1, xmmword [ebx + eax - 0x20]
movups xmm0, xmmword [eax - 0x20]
pxor xmm1, xmm0
movups xmmword [eax + ebp - 0x20], xmm1
cmp ecx, dword [esp + 0x20]
jb 0x45d6f0
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x10], ecx
cmp ecx, ebp
jae 0x45d77e
mov eax, esi
lea ecx, [edi + ecx*4]
sub eax, edi
sub ebx, edi
mov dword [esp + 0x20], eax
mov edx, ebx
mov eax, dword [esp + 0x10]
sub ebp, eax
add eax, ebp
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x10], eax
nop dword [eax]
mov eax, dword [ecx + edx]
lea ecx, [ecx + 4]
xor eax, dword [ecx - 4]
mov dword [ecx + ebx - 4], eax
sub ebp, 1
jne 0x45d760
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
shl ecx, 2
sub edx, ecx
mov dword [esp + 0x10], edx
je 0x45d872
add esi, ecx
add ebx, ecx
mov dword [esp + 0x18], esi
add edi, ecx
mov dword [esp + 0x14], ebx
xor ebp, ebp
test edx, edx
je 0x45d872
cmp edx, 0x20
jb 0x45d84d
lea eax, [edi - 1]
lea ecx, [esi - 1]
add eax, edx
add ecx, edx
cmp esi, eax
ja 0x45d7c4
cmp ecx, edi
jae 0x45d84d
lea eax, [ebx - 1]
add eax, edx
cmp esi, eax
ja 0x45d7d1
cmp ecx, ebx
jae 0x45d84d
lea ecx, [esi + 0x10]
mov eax, edx
mov dword [esp + 0x24], ecx
and eax, 0xffffffe0
mov ecx, ebx
mov dword [esp + 0x2c], eax
sub ecx, edi
mov eax, edi
mov dword [esp + 0x20], ecx
mov ecx, esi
sub ecx, edi
mov dword [esp + 0x1c], ecx
mov ecx, ebx
mov ebx, dword [esp + 0x20]
sub ecx, esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
nop dword [eax + eax]
movups xmm0, xmmword [eax]
add ebp, 0x20
lea eax, [eax + 0x20]
lea ecx, [ecx + 0x20]
movups xmm1, xmmword [ebx + eax - 0x20]
pxor xmm1, xmm0
movups xmmword [esi + eax - 0x20], xmm1
movups xmm1, xmmword [edx + ecx - 0x20]
movups xmm0, xmmword [eax - 0x10]
pxor xmm1, xmm0
movups xmmword [ecx - 0x20], xmm1
cmp ebp, dword [esp + 0x2c]
jb 0x45d810
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
cmp ebp, edx
jae 0x45d872
sub ebx, edi
lea ecx, [edi + ebp]
sub esi, edi
sub edx, ebp
nop word [eax + eax]
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [esi + ecx - 1], al
sub edx, 1
jne 0x45d860
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret