Function at 0x404a20
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, 0x3a9ec
call fcn.00407a80
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
xor eax, eax
mov dword [ebp - 0x3a9a0], 0
push eax
push eax
push eax
mov word [ebp - 0x3a98c], ax
lea eax, [ebp - 0x3a99c]
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0x3a9a0]
mov dword [ebp - 0x3a99c], 0x10001
push eax
mov dword [ebp - 0x3a998], 0x1f40
mov dword [ebp - 0x3a994], 0x1f40
mov dword [ebp - 0x3a990], 0x80001
call dword [sym.imp.WINMM.dll_waveOutOpen]
push 0x3a980
lea eax, [ebp - 0x3a988]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
xor ecx, ecx
cmp dword [0x40a3c8], 6
jl 0x404c83
movaps xmm0, xmmword [0x408860]
lea eax, [ecx + 4]
movaps xmm6, xmmword [0x408690]
movaps xmm7, xmmword [0x408820]
movaps xmm4, xmmword [0x408900]
movaps xmm5, xmmword [0x408930]
movaps xmmword [ebp - 0x3a9e0], xmm0
movaps xmm0, xmmword [0x4088d0]
mov esi, dword [ebp - 0x3a9e0]
movaps xmmword [ebp - 0x3a9d0], xmm0
mov edx, dword [ebp - 0x3a9d0]
nop dword [eax + eax]
movd xmm0, ecx
add ecx, 8
pshufd xmm2, xmm0, 0
movaps xmm0, xmm7
paddd xmm2, xmm6
xorps xmm0, xmm2
movaps xmm3, xmm2
psrld xmm0, 9
psrld xmm3, 9
psubd xmm3, xmmword [0x408670]
xorps xmm3, xmm0
movaps xmm0, xmm3
movaps xmm1, xmm3
punpckldq xmm1, xmm3
punpckhdq xmm0, xmm3
pmuludq xmm1, xmm4
pmuludq xmm0, xmm4
shufps xmm1, xmm0, 0xdd
psrld xmm1, 2
movd xmm0, esi
pmulld xmm1, xmmword [0x408780]
psubd xmm3, xmm1
pmulld xmm3, xmm2
movaps xmm1, xmm3
punpckldq xmm1, xmm3
pmuludq xmm1, xmm5
punpckhdq xmm3, xmm3
pmuludq xmm3, xmm5
shufps xmm1, xmm3, 0xdd
psrld xmm1, 3
pshufb xmm1, xmmword [0x408660]
psubb xmm1, xmm0
movd xmm0, edx
vpmovzxbw ymm0, xmm0
vpmovzxbw ymm1, xmm1
vpmullw ymm0, ymm1, ymm0
vpmovzxwd zmm0, ymm0
vpmovdb xmm0, zmm0
movd dword [ebp + eax - 0x3a98c], xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
paddd xmm2, xmm6
movaps xmm0, xmm2
movaps xmm3, xmm2
xorps xmm0, xmm7
psrld xmm3, 9
psrld xmm0, 9
psubd xmm3, xmmword [0x408670]
xorps xmm3, xmm0
movaps xmm0, xmm3
movaps xmm1, xmm3
punpckldq xmm1, xmm3
punpckhdq xmm0, xmm3
pmuludq xmm1, xmm4
pmuludq xmm0, xmm4
shufps xmm1, xmm0, 0xdd
psrld xmm1, 2
movd xmm0, esi
pmulld xmm1, xmmword [0x408780]
psubd xmm3, xmm1
pmulld xmm3, xmm2
movaps xmm1, xmm3
punpckldq xmm1, xmm3
pmuludq xmm1, xmm5
punpckhdq xmm3, xmm3
pmuludq xmm3, xmm5
shufps xmm1, xmm3, 0xdd
psrld xmm1, 3
pshufb xmm1, xmmword [0x408660]
psubb xmm1, xmm0
movd xmm0, edx
vpmovzxbw ymm0, xmm0
vpmovzxbw ymm1, xmm1
vpmullw ymm0, ymm1, ymm0
vpmovzxwd zmm0, ymm0
vpmovdb xmm0, zmm0
movd dword [ebp + eax - 0x3a988], xmm0
add eax, 8
cmp eax, 0x3a984
jb 0x404b10
jmp 0x404cc1
mov esi, 0xd
mov eax, ecx
mov edx, ecx
shr edx, 9
xor eax, 0x200
dec edx
shr eax, 9
xor eax, edx
xor edx, edx
div esi
mov eax, 0xcccccccd
imul edx, ecx
mul edx
shr edx, 3
sub dl, 2
shl dl, 6
mov byte [ebp + ecx - 0x3a988], dl
inc ecx
cmp ecx, 0x3a980
jb 0x404c88
lea eax, [ebp - 0x3a988]
mov dword [ebp - 0x3a9bc], 0x3a980
mov dword [ebp - 0x3a9c0], eax
lea eax, [ebp - 0x3a9c0]
push 0x20
push eax
push dword [ebp - 0x3a9a0]
mov dword [ebp - 0x3a9b8], 0
mov dword [ebp - 0x3a9b4], 0
mov dword [ebp - 0x3a9b0], 0
mov dword [ebp - 0x3a9ac], 0
mov dword [ebp - 0x3a9a8], 0
mov dword [ebp - 0x3a9a4], 0
call dword [sym.imp.WINMM.dll_waveOutPrepareHeader]
push 0x20
lea eax, [ebp - 0x3a9c0]
push eax
push dword [ebp - 0x3a9a0]
call dword [sym.imp.WINMM.dll_waveOutWrite]
push 0x20
lea eax, [ebp - 0x3a9c0]
push eax
push dword [ebp - 0x3a9a0]
call dword [sym.imp.WINMM.dll_waveOutUnprepareHeader]
push dword [ebp - 0x3a9a0]
call dword [sym.imp.WINMM.dll_waveOutClose]
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.00406c74
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret