Function at 0x40e630
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
mov eax, dword [0x45f200]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
mov ecx, edx
push esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x48], ebx
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x4c], edi
cmp esi, 0x40
jb 0x40e6fd
mov eax, dword [ebp + 0x10]
lea esi, [edi + 0x3c]
add ebx, 0x3c
shr eax, 6
mov dword [ebp - 0x4c], eax
nop
lea edx, [ebp - 0x44]
call fcn.0040cd70
lea eax, [ebp - 8]
xor ecx, ecx
cmp edi, eax
ja 0x40e68c
lea eax, [ebp - 0x44]
cmp esi, eax
jae 0x40e838
mov edx, dword [ebp - 0x48]
cmp edi, ebx
ja 0x40e69b
cmp esi, edx
jae 0x40e840
movups xmm1, xmmword [edx]
movups xmm0, xmmword [ebp - 0x44]
xorps xmm1, xmm0
movups xmm0, xmmword [ebp - 0x34]
movups xmmword [edi], xmm1
movups xmm1, xmmword [ebx - 0x2c]
xorps xmm1, xmm0
movups xmm0, xmmword [ebp - 0x24]
movups xmmword [esi - 0x2c], xmm1
movups xmm1, xmmword [ebx - 0x1c]
xorps xmm1, xmm0
movups xmm0, xmmword [ebp - 0x14]
movups xmmword [esi - 0x1c], xmm1
movups xmm1, xmmword [ebx - 0xc]
xorps xmm1, xmm0
movups xmmword [esi - 0xc], xmm1
sub dword [ebp + 0x10], 0x40
add edx, 0x40
mov ecx, dword [ebp - 0x50]
add ebx, 0x40
add edi, 0x40
mov dword [ebp - 0x48], edx
add esi, 0x40
sub dword [ebp - 0x4c], 1
jne 0x40e670
mov esi, dword [ebp + 0x10]
mov ebx, edx
mov dword [ebp - 0x4c], edi
test esi, esi
je 0x40e827
lea edx, [ebp - 0x44]
call fcn.0040cd70
xor eax, eax
cmp esi, 8
jb 0x40e80e
lea edx, [edi - 1]
lea ecx, [ebp + esi - 0x45]
add edx, esi
cmp edi, ecx
ja 0x40e730
lea ecx, [ebp - 0x44]
cmp edx, ecx
jae 0x40e80e
lea ecx, [ebx - 1]
add ecx, esi
cmp edi, ecx
ja 0x40e741
cmp edx, ebx
jae 0x40e80e
cmp esi, 0x40
jb 0x40e7e7
mov ecx, esi
mov edx, esi
and ecx, 0x3f
mov esi, ebx
sub edx, ecx
mov dword [ebp - 0x64], ecx
mov dword [ebp - 0x60], edx
lea ecx, [edi + 0x10]
lea edx, [ebx + 0x30]
sub esi, edi
lea ebx, [ebp - 0x44]
mov dword [ebp - 0x50], esi
sub ebx, edi
mov dword [ebp - 0x54], ebx
lea ebx, [ebp - 0x34]
sub ebx, edi
mov dword [ebp - 0x58], ebx
lea ebx, [ebp - 0x24]
sub ebx, edi
mov edi, dword [ebp - 0x54]
mov dword [ebp - 0x5c], ebx
mov ebx, esi
movups xmm0, xmmword [edx - 0x30]
mov esi, dword [ebp - 0x58]
lea edx, [edx + 0x40]
movups xmm1, xmmword [ebp + eax - 0x44]
add eax, 0x40
lea ecx, [ecx + 0x40]
xorps xmm1, xmm0
movups xmmword [ecx - 0x50], xmm1
movups xmm0, xmmword [ebx + ecx - 0x40]
movups xmm1, xmmword [edi + ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [ecx - 0x40], xmm1
movups xmm0, xmmword [edx - 0x50]
movups xmm1, xmmword [esi + ecx - 0x40]
mov esi, dword [ebp - 0x5c]
xorps xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
movups xmm1, xmmword [esi + ecx - 0x40]
mov esi, dword [ebp + 0x10]
movups xmm0, xmmword [edx - 0x40]
xorps xmm1, xmm0
movups xmmword [ecx - 0x20], xmm1
cmp eax, dword [ebp - 0x60]
jb 0x40e783
cmp dword [ebp - 0x64], 8
mov edi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x48]
jb 0x40e80a
mov ecx, esi
and ecx, 0xfffffff8
nop dword [eax]
movq xmm1, qword [ebx + eax]
movq xmm0, qword [ebp + eax - 0x44]
xorps xmm1, xmm0
movq qword [edi + eax], xmm1
add eax, 8
cmp eax, ecx
jb 0x40e7f0
cmp eax, esi
jae 0x40e827
lea ecx, [ebp - 0x44]
sub ebx, ecx
sub edi, ecx
lea edx, [ebp - 0x44]
add edx, eax
inc eax
mov cl, byte [edx + ebx]
xor cl, byte [edx]
mov byte [edx + edi], cl
cmp eax, esi
jb 0x40e815
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004297d1
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x48]
nop dword [eax + eax]
mov eax, dword [ebx + ecx*4 - 0x3c]
xor eax, dword [ebp + ecx*4 - 0x44]
mov dword [esi + ecx*4 - 0x3c], eax
inc ecx
cmp ecx, 0x10
jl 0x40e840
jmp 0x40e6d5