Function at 0x401ea0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c8
mov eax, 0x48e
mov word [ebp - 0x164], ax
mov byte [ebp - 0x185], 0xc
mov cx, word [ebp + 0x14]
mov word [ebp - 0x1a4], cx
mov dword [ebp - 0x138], 0x114
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x15c], edx
mov ax, word [ebp - 0x164]
mov word [ebp - 0x18c], ax
mov cx, word [ebp - 0x1a4]
mov word [ebp - 0x1a0], cx
mov dl, byte [ebp + 8]
mov byte [ebp - 0x13d], dl
mov dword [ebp - 0x158], 0x2e93
cmp dword [ebp - 0x158], 0xb8e6
jbe 0x401f4a
movzx eax, word [ebp - 0x1a0]
push eax
mov ecx, dword [ebp - 0x15c]
push ecx
movzx edx, word [ebp + 0x14]
push edx
movzx eax, byte [ebp - 0x13d]
push eax
call fcn.00401ea0
add esp, 0x10
mov ecx, dword [ebp + 0x10]
and ecx, 0x60bb
mov dword [ebp - 0x15c], ecx
jmp 0x401f74
mov dl, byte [ebp - 0x13d]
mov byte [ebp - 0x17d], dl
lea eax, [ebp + 0x10]
mov dword [ebp - 0x160], eax
mov cl, byte [ebp - 0x185]
mov byte [ebp - 0x11], cl
mov edx, dword [ebp - 0x158]
mov dword [ebp - 0x148], edx
mov al, byte [ebp - 0x13d]
mov byte [ebp - 0x16d], al
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x1ac], ecx
mov dx, word [ebp - 0x164]
mov word [ebp - 0x1a8], dx
lea eax, [ebp - 0x185]
mov dword [ebp - 0x168], eax
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x18], ecx
lea edx, [ebp - 0x148]
mov dword [ebp - 0x19c], edx
movzx eax, byte [ebp - 0x13d]
movzx ecx, byte [ebp + 8]
xor eax, ecx
movzx edx, byte [ebp - 0x17d]
movzx ecx, byte [ebp - 0x16d]
sar edx, cl
cmp eax, edx
jl 0x40207e
movzx eax, byte [ebp - 0x13d]
movzx ecx, byte [ebp + 8]
or eax, ecx
mov byte [ebp - 0x16d], al
lea edx, [ebp - 0x1a0]
mov dword [ebp - 8], edx
mov eax, dword [ebp - 0x19c]
mov edx, dword [ebp - 0x148]
mov ecx, dword [eax]
shl edx, cl
cmp edx, dword [ebp - 0x158]
je 0x40204f
mov eax, dword [ebp - 0x160]
mov ecx, dword [eax]
mov dword [ebp - 0x10], ecx
lea edx, [ebp - 0x148]
mov dword [ebp - 0x16c], edx
lea eax, [ebp - 0x15c]
mov dword [ebp - 0x1b0], eax
mov ecx, dword [ebp - 0x1ac]
mov dx, word [ecx]
mov word [ebp - 0x1c], dx
mov al, byte [ebp - 0x16d]
mov byte [ebp - 0x14d], al
jmp 0x40207e
movsx ecx, word [ebp - 0x1a8]
movsx edx, word [ebp - 0x164]
sub ecx, edx
movsx eax, word [ebp - 0x18c]
cmp ecx, eax
jl 0x40207e
mov ecx, dword [ebp - 0x158]
add ecx, dword [ebp - 0x148]
mov edx, dword [ebp - 0x19c]
mov dword [edx], ecx
lea eax, [ebp + 0x10]
mov dword [ebp - 0x194], eax
mov ecx, dword [ebp - 0x168]
mov dl, byte [ecx]
mov byte [ebp - 0x13e], dl
lea eax, [ebp - 0x1a8]
mov dword [ebp - 0x14c], eax
mov ecx, dword [ebp - 0x1b0]
mov edx, dword [ebp - 0x18]
and edx, dword [ecx]
mov eax, dword [ebp - 0x194]
mov ecx, dword [ebp + 0x10]
add ecx, dword [eax]
cmp edx, ecx
jne 0x40249d
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0x17c], eax
movzx edx, byte [ebp - 0x13d]
movzx eax, byte [ebp - 0x17d]
sub edx, eax
mov byte [ebp - 0x14d], dl
mov cl, byte [ebp - 0x185]
mov byte [ebp - 0x1b4], cl
cmp byte [ebp - 0x1b4], 7
je 0x402101
jmp 0x40219a
mov edx, dword [ebp - 0x194]
mov eax, dword [edx]
mov dword [ebp - 0x1b8], eax
cmp dword [ebp - 0x1b8], 0x3f51
je 0x40211d
jmp 0x402122
call section..text
movzx edx, word [ebp - 0x1a4]
movzx ecx, word [ebp + 0x14]
sar edx, cl
mov eax, dword [ebp - 0x1ac]
movzx eax, word [eax]
mov ecx, dword [ebp - 8]
movzx ecx, word [ecx]
shl eax, cl
cmp edx, eax
jge 0x40214c
mov dx, word [ebp - 0x1c]
mov word [ebp + 0xc], dx
mov eax, dword [ebp - 0x19c]
mov ecx, dword [ebp - 0x16c]
mov edx, dword [eax]
xor edx, dword [ecx]
mov eax, dword [ebp - 0x19c]
mov dword [eax], edx
mov ecx, dword [ebp - 0x194]
mov ecx, dword [ecx]
call fcn.00401b30
mov edx, dword [ebp - 0x10]
and edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1b0]
mov dword [eax], edx
movzx ecx, byte [ebp - 0x17d]
movzx edx, byte [ebp - 0x14d]
add ecx, edx
mov byte [ebp - 0x16d], cl
jmp 0x40245b
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x154], eax
mov ecx, dword [ebp - 0x148]
mov dword [ebp - 0x178], ecx
mov edx, dword [ebp - 0x1b0]
mov eax, dword [ebp - 0x10]
sub eax, dword [edx]
mov ecx, dword [ebp - 0x194]
mov dword [ecx], eax
mov edx, dword [ebp - 0x14c]
movsx eax, word [edx]
mov dword [ebp - 0x1bc], eax
cmp dword [ebp - 0x1bc], 0x7b0
je 0x4021df
jmp 0x402207
mov ecx, dword [ebp - 0x154]
mov dword [ebp + 0x10], ecx
mov edx, dword [ebp - 0x168]
movsx eax, byte [edx]
movsx ecx, byte [ebp - 0x13e]
sub eax, ecx
mov edx, dword [ebp - 0x168]
mov byte [edx], al
jmp 0x4022af
mov eax, dword [ebp - 0x194]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x1b0]
add ecx, dword [edx]
mov eax, dword [ebp - 0x160]
mov edx, dword [eax]
and edx, dword [ebp + 0x10]
cmp ecx, edx
jge 0x402291
mov eax, dword [ebp - 8]
movzx ecx, word [eax]
movzx edx, word [ebp - 0x1c]
add ecx, edx
mov word [ebp - 0x1a0], cx
mov al, byte [ebp - 0x17d]
mov byte [ebp + 8], al
mov ecx, dword [ebp - 0x168]
mov dl, byte [ecx]
mov byte [ebp - 0x1c0], dl
cmp byte [ebp - 0x1c0], 0x2b
je 0x40225b
jmp 0x40228b
movsx eax, byte [ebp - 0x13e]
movsx ecx, byte [ebp - 0x11]
sub eax, ecx
mov edx, dword [ebp - 0x168]
mov byte [edx], al
movzx eax, word [ebp - 0x1a0]
push eax
mov edx, dword [ebp - 0x148]
mov cl, byte [ebp - 0x13e]
call fcn.004014b0
jmp 0x402291
mov ecx, dword [ebp - 0x10]
mov dword [ebp + 0x10], ecx
mov edx, dword [ebp - 0x160]
mov eax, dword [edx]
mov dword [ebp - 0xc], eax
movzx ecx, byte [ebp - 0x13d]
movzx edx, byte [ebp + 8]
add ecx, edx
mov byte [ebp - 0x17d], cl
mov eax, dword [ebp - 0x14c]
movsx ecx, word [eax]
movsx edx, word [ebp - 0x1a8]
sub ecx, edx
movsx eax, word [ebp - 0x18c]
movsx edx, word [ebp - 0x164]
or eax, edx
cmp ecx, eax
jg 0x402389
movzx eax, word [ebp - 0x1a4]
mov ecx, dword [ebp - 8]
movzx ecx, word [ecx]
shl eax, cl
mov word [ebp - 0x1c], ax
mov edx, dword [ebp - 0x16c]
mov eax, dword [edx]
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x14c]
movsx edx, word [ecx]
movsx eax, word [ebp - 0x1a8]
xor edx, eax
movsx ecx, word [ebp - 0x164]
movsx eax, word [ebp - 0x18c]
imul ecx, eax
cmp edx, ecx
jg 0x402387
mov cl, byte [ebp - 0x11]
mov byte [ebp - 0x1c4], cl
cmp byte [ebp - 0x1c4], 0xc
je 0x402332
jmp 0x402371
mov edx, dword [ebp - 0x1b0]
mov eax, dword [ebp + 0x10]
and eax, dword [edx]
mov ecx, dword [ebp - 0x194]
mov dword [ecx], eax
mov edx, dword [ebp - 0x194]
mov eax, dword [edx]
mov dword [ebp - 0x144], eax
lea ecx, [ebp - 0x148]
mov dword [ebp - 0x13c], ecx
movzx edx, word [ebp + 0x14]
mov eax, dword [ebp - 8]
movzx ecx, word [eax]
sub edx, ecx
mov word [ebp - 0x1c], dx
jmp 0x402387
movzx edx, byte [ebp - 0x16d]
movzx eax, byte [ebp - 0x13d]
add edx, eax
mov byte [ebp - 0x17d], dl
jmp 0x4023af
mov ecx, dword [ebp - 0x168]
movzx edx, byte [ecx]
push edx
mov eax, dword [ebp - 0x168]
movzx ecx, byte [eax]
push ecx
mov edx, dword [ebp - 0x168]
movzx eax, byte [edx]
push eax
call fcn.00401840
add esp, 0xc
mov ecx, dword [ebp - 0x194]
mov edx, dword [ecx]
mov dword [ebp - 0x1c8], edx
cmp dword [ebp - 0x1c8], 0
je 0x4023c8
jmp 0x4023ca
jmp 0x402408
mov eax, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x10]
sub ecx, dword [eax]
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x1b0]
mov eax, dword [edx]
and eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x1b0]
mov dword [ecx], eax
mov edx, dword [ebp - 0x168]
movsx eax, byte [edx]
movsx ecx, byte [ebp - 0x13e]
add eax, ecx
mov byte [ebp - 0x185], al
call section..text
mov edx, dword [ebp - 0x10]
mov dword [ebp + 0x10], edx
lea eax, [ebp - 0x144]
push eax
mov ecx, dword [ebp - 0x190]
push ecx
mov edx, dword [ebp - 0x174]
push edx
call dword [sym.imp.USERENV.dll_GetUserProfileDirectoryW]
mov dword [ebp - 0x184], eax
mov eax, dword [ebp - 0x160]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x194]
add ecx, dword [edx]
mov eax, dword [ebp - 0x1b0]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x13c]
mov edx, dword [ecx]
sub edx, dword [ebp - 0x148]
mov dword [ebp - 0x178], edx
mov eax, dword [ebp - 0x16c]
mov ecx, dword [ebp - 0x148]
add ecx, dword [eax]
mov dword [ebp - 0x158], ecx
mov edx, dword [ebp - 0x18]
mov dword [ebp + 0x10], edx
mov eax, dword [ebp - 0x194]
mov ecx, dword [eax]
or ecx, dword [ebp - 0x10]
mov dword [ebp - 0x15c], ecx
lea edx, [ebp - 0x168]
push edx
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.USERENV.dll_GetProfilesDirectoryW]
mov dword [ebp - 0x198], eax
movzx ecx, word [ebp - 0x1a0]
movzx edx, word [ebp - 0x1a4]
sub ecx, edx
mov word [ebp - 0x1c], cx
movzx eax, word [ebp - 0x1a0]
push eax
mov ecx, dword [ebp - 0x19c]
mov edx, dword [ecx]
mov cl, byte [ebp - 0x11]
call fcn.004014b0
mov eax, 0x7e
mov esp, ebp
pop ebp
ret