Function at 0x40ac80
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 [0x40dbac]
xor ecx, ecx
movq xmm0, qword [str.xAd_B]
movups xmm6, xmmword [0x40de10]
mov dword [ebp - 0x24], eax
mov ax, word [0x40dbb0]
movups xmm5, xmmword [0x40de70]
push esi
mov esi, dword [0x410470]
mov word [ebp - 0x20], ax
mov al, byte [0x40dbb2]
mov dword [ebp - 8], 0
movq qword [ebp - 0x2c], xmm0
mov byte [ebp - 0x1e], al
mov dword [ebp - 0xc], ecx
movups xmm7, xmmword [0x40ddf0]
movups xmm2, xmmword [0x40de30]
movups xmm3, xmmword [0x40ddd0]
movups xmm4, xmmword [0x40dde0]
cmp esi, 2
jl 0x40add0
movaps xmm1, xmm3
movaps xmm0, xmm3
punpckhdq xmm0, xmm3
movaps xmm2, xmm3
pmuldq xmm0, xmm5
punpckldq xmm1, xmm3
mov ecx, 8
pmuldq xmm1, xmm5
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm3
mov dword [ebp - 0xc], ecx
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 [0x40de30]
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 [0x40de30]
xorps xmm2, xmm0
movd dword [ebp - 0x28], xmm2
movups xmm2, xmmword [0x40de30]
nop dword [eax]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
shl cl, 3
sub cl, al
mov al, byte [ebp - 0xc]
shl cl, 3
sub al, cl
mov ecx, dword [ebp - 0xc]
add al, 0x31
xor byte [ebp + ecx - 0x2c], al
inc ecx
mov dword [ebp - 0xc], ecx
cmp ecx, 0xf
jl 0x40add0
mov eax, dword [0x40dbbc]
xor ecx, ecx
movq xmm0, qword [str.zWAZPZ]
mov dword [ebp - 0x14], eax
mov al, byte [0x40dbc0]
movq qword [ebp - 0x1c], xmm0
mov byte [ebp - 0x10], al
cmp esi, 2
jl 0x40aef0
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, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dl, al
shl dl, 3
sub dl, al
mov al, cl
shl dl, 3
sub al, dl
add al, 0x31
xor byte [ebp + ecx - 0x1c], al
inc ecx
cmp ecx, 0xd
jl 0x40aef0
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 0x40af65
cmp dword [ebp - 8], 0
je 0x40af65
mov eax, dword fs:[0x30]
add eax, 0x1000
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040bba7
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor eax, eax
xor ecx, ebp
call fcn.0040bba7
mov esp, ebp
pop ebp
ret