Function at 0x40a9a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x410040]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x40dd0c]
xor edx, edx
movq xmm0, qword [str.xAd_B]
movups xmm6, xmmword [0x40ddc0]
mov dword [ebp - 0x24], eax
mov ax, word [0x40dd10]
movups xmm5, xmmword [0x40de30]
push esi
mov esi, dword [0x410470]
mov word [ebp - 0x20], ax
mov al, byte [0x40dd12]
mov dword [ebp - 8], 0
movq qword [ebp - 0x2c], xmm0
mov byte [ebp - 0x1e], al
mov dword [ebp - 0xc], edx
movups xmm7, xmmword [0x40dd90]
movups xmm2, xmmword [0x40dde0]
movups xmm3, xmmword [0x40dd70]
movups xmm4, xmmword [0x40dd80]
cmp esi, 2
jl 0x40aaf0
movaps xmm1, xmm3
movaps xmm0, xmm3
punpckhdq xmm0, xmm3
movaps xmm2, xmm3
pmuldq xmm0, xmm5
punpckldq xmm1, xmm3
mov edx, 8
pmuldq xmm1, xmm5
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm3
mov dword [ebp - 0xc], edx
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
movaps xmm1, xmm4
pmulld xmm0, xmm7
psubd xmm2, xmm0
punpckldq xmm1, xmm4
movd xmm0, dword [str.xAd_B]
andps xmm2, xmm6
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmmword [0x40dde0]
xorps xmm2, xmm0
movaps xmm0, xmm4
punpckhdq xmm0, xmm4
pmuldq xmm0, xmm5
pmuldq xmm1, xmm5
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm4
movd dword [ebp - 0x2c], xmm2
psrad xmm1, 5
movaps xmm2, xmm4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm7
psubd xmm2, xmm0
movd xmm0, dword [ebp - 0x28]
andps xmm2, xmm6
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmmword [0x40dde0]
xorps xmm2, xmm0
movd dword [ebp - 0x28], xmm2
movups xmm2, xmmword [0x40dde0]
nop dword [eax]
mov eax, 0xa0a0a0a1
imul edx
add edx, dword [ebp - 0xc]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0xc]
movsx eax, al
mov cl, dl
imul eax, eax, 0x33
sub cl, al
add cl, 0x31
xor byte [ebp + edx - 0x2c], cl
inc edx
mov dword [ebp - 0xc], edx
cmp edx, 0xf
jl 0x40aaf0
mov eax, dword [0x40dd5c]
xor ecx, ecx
movq xmm0, qword [str.zWAZPZ]
mov dword [ebp - 0x14], eax
mov al, byte [0x40dd60]
movq qword [ebp - 0x1c], xmm0
mov byte [ebp - 0x10], al
cmp esi, 2
jl 0x40ac10
movaps xmm1, xmm3
movd eax, xmm2
punpckldq xmm1, xmm3
movaps xmm0, xmm3
punpckhdq xmm0, xmm3
mov ecx, 8
pmuldq xmm0, xmm5
pmuldq xmm1, xmm5
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm3
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
movaps xmm1, xmm4
pmulld xmm0, xmm7
psubd xmm3, xmm0
punpckldq xmm1, xmm4
andps xmm3, xmm6
movd xmm0, eax
packuswb xmm3, xmm3
packuswb xmm3, xmm3
paddb xmm3, xmm0
movd xmm0, dword [str.zWAZPZ]
xorps xmm3, xmm0
movaps xmm0, xmm4
punpckhdq xmm0, xmm4
pmuldq xmm0, xmm5
pmuldq xmm1, xmm5
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm4
movd dword [ebp - 0x1c], xmm3
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm7
psubd xmm4, xmm0
movd xmm0, eax
andps xmm4, xmm6
packuswb xmm4, xmm4
packuswb xmm4, xmm4
paddb xmm4, xmm0
movd xmm0, dword [ebp - 0x18]
xorps xmm4, xmm0
movd dword [ebp - 0x18], xmm4
nop dword [eax]
mov eax, 0xa0a0a0a1
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dl, cl
movsx eax, al
imul eax, eax, 0x33
sub dl, al
add dl, 0x31
xor byte [ebp + ecx - 0x1c], dl
inc ecx
cmp ecx, 0xd
jl 0x40ac10
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea ecx, [ebp - 0x2c]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
lea eax, [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
pop esi
test eax, eax
je 0x40ac82
cmp dword [ebp - 8], 0
je 0x40ac82
mov eax, dword fs:[0x30]
add eax, 0x1000
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040b8b7
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor eax, eax
xor ecx, ebp
call fcn.0040b8b7
mov esp, ebp
pop ebp
ret