Function at 0x453a30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb4
mov eax, dword [0x52de04]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sub ecx, eax
mov dword [ebp - 0x54], eax
mov eax, 0x38e38e39
imul ecx
push edi
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edi, ecx
mov dword [ebp - 0x60], ecx
sar edi, 1
test edi, edi
jle 0x453c57
mov edx, dword [ebp - 0x54]
lea eax, [ecx - 1]
mov dword [ebp - 0x68], eax
sar eax, 1
mov dword [ebp - 0x5c], eax
lea eax, [edi + edi*8]
push ebx
lea eax, [edx + eax*8]
push esi
movups xmm0, xmmword [eax - 0x48]
sub eax, 0x48
mov esi, dword [ebp + 0x10]
dec edi
mov dword [ebp - 0x6c], eax
movups xmmword [ebp - 0x84], xmm0
mov ebx, edi
mov dword [ebp - 0x58], edi
movups xmmword [ebp - 0x4c], xmm0
mov dword [ebp - 0x50], ebx
movups xmm0, xmmword [eax + 0x10]
mov dword [ebp - 0x64], edi
movups xmmword [ebp - 0x94], xmm0
movups xmmword [ebp - 0x3c], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ebp - 0xa4], xmm0
movups xmmword [ebp - 0x2c], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ebp - 0xb4], xmm0
movups xmmword [ebp - 0x1c], xmm0
movq xmm0, qword [eax + 0x40]
mov eax, dword [ebp - 0x5c]
movq qword [ebp - 0x74], xmm0
movq qword [ebp - 0xc], xmm0
cmp edi, eax
jge 0x453b5c
nop dword [eax]
add edi, edi
lea eax, [edi + 2]
lea eax, [eax + eax*8]
lea ecx, [edx + eax*8]
lea eax, [ecx - 0x48]
push eax
push ecx
mov ecx, esi
call fcn.00450f90
mov edx, dword [ebp - 0x54]
movzx eax, al
xor eax, 1
inc eax
add edi, eax
lea eax, [edi + edi*8]
movups xmm0, xmmword [edx + eax*8]
lea ecx, [edx + eax*8]
lea eax, [ebx + ebx*8]
mov ebx, edi
movups xmmword [edx + eax*8], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [edx + eax*8 + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x20]
movups xmmword [edx + eax*8 + 0x20], xmm0
movups xmm0, xmmword [ecx + 0x30]
movups xmmword [edx + eax*8 + 0x30], xmm0
movq xmm0, qword [ecx + 0x40]
movq qword [edx + eax*8 + 0x40], xmm0
mov eax, dword [ebp - 0x5c]
cmp edi, eax
jl 0x453af0
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x50], edi
mov edi, dword [ebp - 0x58]
cmp ebx, eax
jne 0x453ba3
test cl, 1
jne 0x453ba3
lea eax, [ecx + ecx*8]
movups xmm0, xmmword [edx + eax*8 - 0x48]
lea ecx, [edx + eax*8]
lea eax, [ebx + ebx*8]
mov ebx, dword [ebp - 0x68]
movups xmmword [edx + eax*8], xmm0
mov dword [ebp - 0x50], ebx
movups xmm0, xmmword [ecx - 0x38]
movups xmmword [edx + eax*8 + 0x10], xmm0
movups xmm0, xmmword [ecx - 0x28]
movups xmmword [edx + eax*8 + 0x20], xmm0
movups xmm0, xmmword [ecx - 0x18]
movups xmmword [edx + eax*8 + 0x30], xmm0
movq xmm0, qword [ecx - 8]
movq qword [edx + eax*8 + 0x40], xmm0
cmp edi, ebx
jge 0x453c0a
lea edi, [ebx - 1]
mov ecx, esi
sar edi, 1
lea eax, [edi + edi*8]
lea ebx, [edx + eax*8]
lea eax, [ebp - 0x4c]
push eax
push ebx
call fcn.00450f90
mov edx, dword [ebp - 0x54]
test al, al
je 0x453c04
movups xmm0, xmmword [ebx]
mov eax, dword [ebp - 0x50]
lea eax, [eax + eax*8]
movups xmmword [edx + eax*8], xmm0
movups xmm0, xmmword [ebx + 0x10]
movups xmmword [edx + eax*8 + 0x10], xmm0
movups xmm0, xmmword [ebx + 0x20]
movups xmmword [edx + eax*8 + 0x20], xmm0
movups xmm0, xmmword [ebx + 0x30]
movups xmmword [edx + eax*8 + 0x30], xmm0
movq xmm0, qword [ebx + 0x40]
mov ebx, edi
movq qword [edx + eax*8 + 0x40], xmm0
mov dword [ebp - 0x50], ebx
cmp dword [ebp - 0x58], edi
jl 0x453ba7
jmp 0x453c07
mov ebx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x60]
lea eax, [ebx + ebx*8]
movups xmm0, xmmword [ebp - 0x84]
movups xmmword [edx + eax*8], xmm0
movups xmm0, xmmword [ebp - 0x94]
movups xmmword [edx + eax*8 + 0x10], xmm0
movups xmm0, xmmword [ebp - 0xa4]
movups xmmword [edx + eax*8 + 0x20], xmm0
movups xmm0, xmmword [ebp - 0xb4]
movups xmmword [edx + eax*8 + 0x30], xmm0
movq xmm0, qword [ebp - 0x74]
movq qword [edx + eax*8 + 0x40], xmm0
mov eax, dword [ebp - 0x6c]
test edi, edi
jg 0x453a85
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop edi
call fcn.004b3f28
mov esp, ebp
pop ebp
ret