Function at 0x45bd40
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.004197d0
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45bd82
test ecx, ecx
je 0x45bd73
lea edx, [ecx - 1]
test ecx, edx
jne 0x45bd73
and edx, esi
jmp 0x45bd79
mov eax, esi
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
je 0x45bdb1
push 0
call fcn.004197d0
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45bdc2
test ecx, ecx
je 0x45bda2
lea edx, [ecx - 1]
test ecx, edx
jne 0x45bda2
and edx, ebx
jmp 0x45bda8
mov eax, ebx
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
jne 0x45bdc2
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
mov dword [esp + 0x10], edx
jmp 0x45bf3b
push 0
call fcn.004197d0
mov edi, dword [esp + 0x38]
mov ecx, eax
add esp, 4
cmp ecx, 1
je 0x45be02
test ecx, ecx
je 0x45bde6
lea edx, [ecx - 1]
test ecx, edx
jne 0x45bde6
and edx, edi
jmp 0x45bdec
mov eax, edi
xor edx, edx
div ecx
neg edx
sbb edx, edx
inc edx
test edx, edx
jne 0x45be02
mov edx, dword [esp + 0x38]
mov dword [esp + 0x10], edx
jmp 0x45bf3b
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 0x45bf1e
cmp ebp, 8
jb 0x45bed6
lea eax, [edi - 4]
mov dword [esp + 0x10], ecx
lea eax, [eax + ebp*4]
cmp esi, eax
ja 0x45be42
lea eax, [esi - 4]
lea eax, [eax + ebp*4]
cmp eax, edi
jae 0x45bed6
lea eax, [ebx - 4]
lea eax, [eax + ebp*4]
cmp esi, eax
ja 0x45be5a
lea eax, [esi - 4]
lea eax, [eax + ebp*4]
cmp eax, ebx
jae 0x45bed6
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 0x45be90
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 0x45bf1e
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 0x45bf00
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 0x45c012
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 0x45c012
cmp edx, 0x20
jb 0x45bfed
lea eax, [edi - 1]
lea ecx, [esi - 1]
add eax, edx
add ecx, edx
cmp esi, eax
ja 0x45bf64
cmp ecx, edi
jae 0x45bfed
lea eax, [ebx - 1]
add eax, edx
cmp esi, eax
ja 0x45bf71
cmp ecx, ebx
jae 0x45bfed
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 0x45bfb0
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
cmp ebp, edx
jae 0x45c012
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 0x45c000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret