Function at 0x452d00
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x24
push ebx
push ebp
mov ebp, ecx
mov ebx, edx
push esi
mov esi, dword [esp + 0x38]
xor edx, edx
mov ecx, esi
mov dword [esp + 0x1c], ebp
shr ecx, 2
mov dword [esp + 0xc], ebx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], ecx
push edi
mov edi, dword [esp + 0x38]
mov dword [esp + 0x18], edi
test ecx, ecx
je 0x452ea4
cmp ecx, 2
jb 0x452e6d
lea eax, [edi - 4]
lea eax, [eax + ecx*4]
cmp ebp, eax
ja 0x452d57
lea eax, [ebp - 4]
lea eax, [eax + ecx*4]
cmp eax, edi
jae 0x452e6d
lea eax, [ebx - 4]
lea eax, [eax + ecx*4]
cmp ebp, eax
ja 0x452d6f
lea eax, [ebp - 4]
lea eax, [eax + ecx*4]
cmp eax, ebx
jae 0x452e6d
cmp ecx, 0x10
jb 0x452e18
mov esi, ecx
mov eax, ecx
and esi, 0xf
mov ecx, ebx
sub eax, esi
mov dword [esp + 0x30], esi
mov esi, ebp
mov dword [esp + 0x2c], eax
sub esi, edi
lea eax, [edi + 0x10]
mov dword [esp + 0x24], esi
sub ecx, edi
mov edi, dword [esp + 0x24]
mov esi, ebx
sub esi, ebp
mov dword [esp + 0x28], esi
lea esi, [ebp + 0x20]
nop word [eax + eax]
movups xmm0, xmmword [eax - 0x10]
mov ebp, dword [esp + 0x28]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ebx + edx*4]
lea esi, [esi + 0x40]
xorps xmm1, xmm0
movups xmmword [esi - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [ecx + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [edi + eax - 0x40], xmm1
movups xmm1, xmmword [esi + ebp - 0x40]
mov ebp, dword [esp + 0x20]
movups xmm0, xmmword [eax - 0x30]
xorps xmm1, xmm0
movups xmmword [esi - 0x40], xmm1
movups xmm1, xmmword [ebx + edx*4 + 0x30]
add edx, 0x10
movups xmm0, xmmword [eax - 0x20]
xorps xmm1, xmm0
movups xmmword [esi - 0x30], xmm1
cmp edx, dword [esp + 0x2c]
jb 0x452db0
cmp dword [esp + 0x30], 2
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x38]
jb 0x452e63
jmp 0x452e1c
mov ecx, ebx
sub ecx, edi
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x3c]
and eax, 0xfffffffe
sub ebp, edi
mov dword [esp + 0x2c], eax
lea eax, [edi + edx*4]
mov dword [esp + 0x30], ebp
nop dword [eax]
nop dword [eax + eax]
movq xmm1, qword [eax + ecx]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 2
xorps xmm1, xmm0
movq qword [eax + ebp - 8], xmm1
cmp edx, dword [esp + 0x2c]
jb 0x452e40
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
cmp edx, eax
jae 0x452ea4
jmp 0x452e6f
mov eax, ecx
sub ebp, edi
lea ecx, [edi + edx*4]
mov dword [esp + 0x30], ebp
mov esi, ebx
sub esi, edi
mov ebp, eax
mov edi, dword [esp + 0x30]
sub ebp, edx
mov edx, eax
mov eax, dword [ecx + esi]
lea ecx, [ecx + 4]
xor eax, dword [ecx - 4]
mov dword [ecx + edi - 4], eax
sub ebp, 1
jne 0x452e86
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x20]
shl edx, 2
sub esi, edx
mov dword [esp + 0x3c], esi
je 0x453016
add edi, edx
add ebp, edx
add ebx, edx
mov dword [esp + 0x38], edi
xor ecx, ecx
test esi, esi
je 0x453016
cmp esi, 8
jb 0x452fe3
lea eax, [edi - 1]
lea edx, [ebp - 1]
add eax, esi
add edx, esi
cmp ebp, eax
ja 0x452ee6
cmp edx, edi
jae 0x452fe3
lea eax, [ebx - 1]
add eax, esi
cmp ebp, eax
ja 0x452ef7
cmp edx, ebx
jae 0x452fe3
cmp esi, 0x40
jb 0x452fa8
mov edx, esi
mov eax, esi
and edx, 0x3f
sub eax, edx
mov dword [esp + 0x20], edx
lea edx, [ebp + 0x20]
mov dword [esp + 0x24], eax
mov ebp, dword [esp + 0x10]
lea eax, [edi + 0x10]
mov esi, ebp
sub esi, dword [esp + 0x18]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x1c]
sub esi, dword [esp + 0x18]
sub ebp, dword [esp + 0x1c]
mov edi, esi
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x30]
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x10]
mov esi, dword [esp + 0x28]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx + ebx]
lea edx, [edx + 0x40]
xorps xmm1, xmm0
movups xmmword [edx - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [eax + ebp - 0x40]
xorps xmm1, xmm0
movups xmmword [eax + edi - 0x40], xmm1
movups xmm1, xmmword [edx + esi - 0x40]
mov esi, dword [esp + 0x3c]
movups xmm0, xmmword [eax - 0x30]
xorps xmm1, xmm0
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [ebx + ecx + 0x30]
add ecx, 0x40
movups xmm0, xmmword [eax - 0x20]
xorps xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp ecx, dword [esp + 0x24]
jb 0x452f40
cmp dword [esp + 0x20], 8
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x10]
jb 0x452fdf
jmp 0x452fac
mov ebp, dword [esp + 0x10]
mov ebx, ebp
lea eax, [ecx + edi]
mov ebp, dword [esp + 0x1c]
mov edx, esi
sub ebx, dword [esp + 0x18]
and edx, 0xfffffff8
sub ebp, dword [esp + 0x18]
movq xmm1, qword [ebx + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add ecx, 8
xorps xmm1, xmm0
movq qword [eax + ebp - 8], xmm1
cmp ecx, edx
jb 0x452fc2
cmp ecx, esi
jae 0x453016
mov eax, dword [esp + 0x10]
lea edx, [ecx + edi]
sub eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
sub ebx, dword [esp + 0x18]
sub esi, ecx
mov dword [esp + 0x10], eax
nop dword [eax]
mov al, byte [eax + edx]
lea edx, [edx + 1]
xor al, byte [edx - 1]
mov byte [ebx + edx - 1], al
mov eax, dword [esp + 0x10]
sub esi, 1
jne 0x453000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret