Function at 0x40e120
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
movsd xmm0, qword [0x447c10]
mov eax, 0x76c
mov word [ebp - 4], ax
mov eax, 0xffffc186
mov dword [ebp - 0xc], 0xce9dd2c6
mov dword [ebp - 0x18], 0x4e32f40d
movsd qword [ebp - 0x2c], xmm0
movsd xmm0, qword [0x448d10]
mov dword [ebp - 0x14], 0xccf0359d
movsd qword [ebp - 0x24], xmm0
mov word [ebp - 8], ax
mov dword [ebp - 0x10], 0x6baa4aaa
movsd xmm1, qword [ebp - 0x24]
movsx eax, word [ebp - 8]
push ebx
push esi
push edi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [ebp + 0xc]
add eax, 4
push eax
subsd xmm1, xmm0
movss xmm0, dword [0x4521a8]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [ebp - 0x14], xmm0
movss xmm0, dword [0x4521a8]
subss xmm0, dword [0x447a58]
movss dword [0x4521a8], xmm0
movsd xmm0, qword [ebp - 0x24]
addsd xmm0, qword [0x447a60]
movsd qword [ebp - 0x24], xmm0
call fcn.0042ffbc
mov edi, dword [ebp + 8]
mov esi, eax
movzx eax, word [0x45236c]
add esp, 4
imul eax, eax, 0x79bad70f
mov dword [ebp - 0x20], esi
mov word [0x45236c], ax
movsd xmm1, qword [ebp - 0x2c]
movsd xmm0, qword [0x452270]
addsd xmm0, qword [0x4482b8]
subsd xmm1, xmm0
movsd qword [ebp - 0x2c], xmm1
movss xmm0, dword [ebp - 0x14]
mov cl, byte [edi + 0x4432b0]
addss xmm0, dword [0x448e44]
mov byte [esi], cl
mov eax, dword [0x4544c0]
subss xmm0, dword [0x449514]
mov al, byte [eax + edi]
xor al, cl
mov byte [esi], al
comiss xmm0, dword [0x449158]
jb 0x40e24f
movzx eax, word [ebp - 4]
sub eax, 0x11d3304
mov word [ebp - 4], ax
movss xmm0, dword [ebp - 0xc]
movss xmm1, dword [0x4490c4]
movss xmm2, dword [0x447a58]
subss xmm1, xmm0
movss xmm0, dword [ebp - 0xc]
addss xmm0, xmm2
comiss xmm1, dword [0x44a340]
movss dword [ebp - 0xc], xmm0
jb 0x40e298
movss xmm0, dword [ebp - 0x14]
ucomiss xmm0, dword [0x4491d8]
lahf
test ah, 0x44
jp 0x40e298
mov dword [ebp - 0x10], 0x85994b4
mov al, byte [edi + 0x4432b1]
movss xmm1, dword [0x4494b0]
movsd xmm3, qword [0x447a60]
mov byte [esi + 1], al
movss xmm0, dword [0x45248c]
subss xmm0, xmm2
movss dword [0x45248c], xmm0
movss xmm0, dword [0x45248c]
mov eax, dword [0x4544c0]
subss xmm1, xmm0
mov al, byte [eax + edi + 1]
xor byte [esi + 1], al
movss dword [ebp - 0x14], xmm1
movsd xmm0, qword [ebp - 0x2c]
movsd xmm1, qword [0x447ae8]
addsd xmm0, xmm3
movsd qword [ebp - 0x2c], xmm0
movsd xmm0, qword [ebp - 0x2c]
subsd xmm0, qword [0x447c40]
comisd xmm1, xmm0
jb 0x40e312
mov dword [ebp - 0x18], 0x4eb39546
movsx eax, word [ebp - 8]
add edi, 2
movsd xmm0, qword [0x452270]
movzx edx, word [esi]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
addsd xmm1, xmm0
movss xmm0, dword [ebp - 0xc]
addss xmm0, dword [0x4494e0]
cvtps2pd xmm0, xmm0
addsd xmm0, qword [ebp - 0x2c]
ucomisd xmm1, xmm0
movsd xmm0, qword [0x452270]
subsd xmm0, xmm3
lahf
movsd qword [0x452270], xmm0
test ah, 0x44
jnp 0x40e3e1
mov ax, word [0x452464]
movss xmm1, dword [ebp - 0xc]
movsx ecx, ax
mov eax, dword [0x45219c]
inc word [0x452464]
add eax, 0x49142afa
dec dword [0x45219c]
add eax, ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jb 0x40e3e1
movsd xmm0, qword [ebp - 0x2c]
addsd xmm0, xmm3
movsd qword [ebp - 0x2c], xmm0
movsd xmm1, qword [ebp - 0x2c]
movss xmm0, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
subsd xmm1, qword [0x448268]
cvtps2pd xmm0, xmm0
subsd xmm1, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [ebp - 0x10], eax
movss xmm0, dword [ebp - 0xc]
addss xmm0, xmm2
movss dword [ebp - 0xc], xmm0
mov ebx, edx
mov dword [ebp - 0x1c], ebx
lea eax, [ebx + 3]
push eax
lea eax, [edi + 0x4432b0]
push eax
push esi
call fcn.0042e9d0
dec dword [0x452298]
add ebx, 3
movsx eax, word [0x452450]
add ebx, esi
mov ecx, dword [0x452298]
add eax, 0xca8e7b59
add ecx, eax
mov dword [ebp + 8], ebx
mov word [0x452450], cx
add esp, 0xc
movsx eax, word [0x452310]
xor edx, edx
movss xmm1, dword [ebp - 0x18]
mov ecx, dword [0x4544c0]
add ecx, edi
mov edi, ebx
movd xmm0, eax
sub edi, esi
mov eax, dword [0x4521f4]
cvtdq2ps xmm0, xmm0
addss xmm1, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm1, xmm0
cvttss2si eax, xmm1
mov dword [0x4521f4], eax
xor eax, eax
dec word [0x452310]
cmp esi, ebx
cmova edi, eax
test edi, edi
je 0x40e4de
cmp edi, 0x20
jb 0x40e4c6
lea eax, [ecx - 1]
add eax, edi
cmp esi, eax
ja 0x40e48a
lea eax, [esi - 1]
add eax, edi
cmp eax, ecx
jae 0x40e4c6
mov eax, edi
mov ebx, edi
and eax, 0x1f
sub ebx, eax
movdqu xmm0, xmmword [esi]
add edx, 0x20
movdqu xmm1, xmmword [ecx]
pxor xmm1, xmm0
movdqu xmmword [esi], xmm1
movdqu xmm1, xmmword [ecx + 0x10]
add ecx, 0x20
movdqu xmm0, xmmword [esi + 0x10]
pxor xmm1, xmm0
movdqu xmmword [esi + 0x10], xmm1
add esi, 0x20
cmp edx, ebx
jne 0x40e493
mov ebx, dword [ebp + 8]
cmp edx, edi
je 0x40e4de
sub ecx, esi
lea esp, [esp]
mov al, byte [ecx + esi]
lea esi, [esi + 1]
xor byte [esi - 1], al
inc edx
cmp edx, edi
jne 0x40e4d0
movss xmm1, dword [0x452268]
mov eax, dword [0x452364]
mov edx, dword [ebp - 0x1c]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm1, xmm0
cvttss2si eax, xmm1
mov word [0x4521ec], ax
inc dword [0x452364]
cmp dword [ebp + 0xc], edx
je 0x40e537
movsx eax, word [0x452134]
lea esi, [ebx - 3]
mov ecx, 0x58dedaa2
sub ecx, eax
add dword [ebp - 0x10], ecx
dec word [0x452134]
sub dword [ebp + 0xc], edx
mov byte [ebx], 0
mov edi, dword [ebx - 3]
jmp 0x40e210
mov eax, dword [ebp - 0x20]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret