Function at 0x40c856
Capabilities:
Get common file path

Disassembly:
push 0x8bc
mov eax, 0x416a99
call fcn.00415e14
push 0x401a28
call fcn.0040c6bc
mov esi, dword [0x41a570]
xor ebx, ebx
mov edi, ebx
mov eax, ebx
mov dword [ebp - 0x63c], edi
mov dword [ebp - 0x648], eax
pop ecx
test esi, esi
jne 0x40c8dc
cmp byte [0x41a56f], al
jne 0x40c8d8
push ebx
push ebx
push 0x402878
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
je 0x40c8bb
push 0x4028a4
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [0x41a570], esi
jmp 0x40c8c1
mov esi, dword [0x41a570]
mov byte [0x41a56f], 1
test esi, esi
jne 0x40c8dc
mov edi, dword [ebp - 0x63c]
mov eax, dword [ebp - 0x648]
mov ecx, ebx
jmp 0x40c906
lea eax, [ebp - 0x648]
mov ecx, esi
push eax
lea eax, [ebp - 0x63c]
push eax
push 1
push ebx
push ebx
call dword [0x41b25c]
call esi
mov edi, dword [ebp - 0x63c]
mov ecx, eax
mov eax, dword [ebp - 0x648]
test ecx, ecx
jne 0x40c921
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401a70
call fcn.0040c6bc
pop ecx
jmp 0x40ce8a
mov ecx, ebx
test eax, eax
je 0x40c943
lea edx, [edi + 8]
cmp dword [edx], ebx
je 0x40c938
inc ecx
add edx, 0xc
cmp ecx, eax
jb 0x40c92a
jmp 0x40c943
imul eax, ecx, 0xc
mov eax, dword [eax + edi]
mov dword [0x41a024], eax
mov esi, dword [0x41a568]
test esi, esi
jne 0x40c98d
cmp byte [0x41a56d], bl
jne 0x40c998
push ebx
push ebx
push 0x402878
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
je 0x40c97c
push 0x402894
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [0x41a568], esi
jmp 0x40c982
mov esi, dword [0x41a568]
mov byte [0x41a56d], 1
test esi, esi
je 0x40c998
push edi
mov ecx, esi
call dword [0x41b25c]
call esi
mov eax, dword [0x41a024]
mov dword [ebp - 0x63c], ebx
cmp eax, 0xffffffff
je 0x40c9b0
push eax
push 0x401ae8
jmp 0x40ca08
push 0x401b20
call fcn.0040c6bc
mov eax, dword [0x41a064]
pop ecx
mov dword [ebp - 0x658], eax
mov eax, dword [0x41a074]
push 0xffffffffffffffff
mov dword [ebp - 0x654], eax
lea eax, [ebp - 0x658]
push ebx
push eax
push 2
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov ecx, eax
sub ecx, ebx
je 0x40ce80
sub ecx, 1
je 0x40c9fd
push eax
push 0x401c08
jmp 0x40c916
push dword [0x41a024]
push 0x401bc4
call fcn.0040c6bc
or dword [ebp - 0x650], 0xffffffff
pop ecx
pop ecx
mov dword [ebp - 0x64c], ebx
mov dword [ebp - 4], 2
lea eax, [ebp - 0x654]
push eax
lea ecx, [ebp - 0x650]
call fcn.0040db83
mov byte [ebp - 4], 3
mov edi, dword [eax]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov esi, dword [0x41a554]
mov ebx, eax
test esi, esi
jne 0x40ca94
cmp byte [0x41a580], 0
jne 0x40ca8e
push esi
push esi
push 0x40280c
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
je 0x40ca7d
push 0x4028d4
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [0x41a554], esi
jmp 0x40ca83
mov esi, dword [0x41a554]
mov byte [0x41a580], 1
test esi, esi
jne 0x40ca94
xor ebx, ebx
mov eax, ebx
jmp 0x40caa7
push edi
push 0x2000000
push ebx
mov ecx, esi
call dword [0x41b25c]
call esi
xor ebx, ebx
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x654]
cmp dword [ecx], 0xffffffff
je 0x40cabd
mov dword [ecx + 4], 1
test eax, eax
jne 0x40cad9
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401c70
call fcn.0040c6bc
pop ecx
pop ecx
jmp 0x40ce56
or dword [ebp - 0x644], 0xffffffff
mov dword [ebp - 0x640], ebx
mov byte [ebp - 4], 9
lea eax, [ebp - 0x654]
push eax
lea ecx, [ebp - 0x644]
call fcn.0040db83
mov byte [ebp - 4], 0xa
push dword [eax]
push 1
push 1
push ebx
push 0x2000000
push dword [ebp - 0x650]
call dword [sym.imp.ADVAPI32.dll_DuplicateTokenEx]
mov ecx, eax
neg ecx
sbb cl, cl
inc cl
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x654]
cmp dword [eax], 0xffffffff
je 0x40cb36
mov dword [eax + 4], 1
test cl, cl
je 0x40cb48
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401cd0
jmp 0x40cb6d
push 4
push 0x41a024
push 0xc
push dword [ebp - 0x644]
call dword [sym.imp.ADVAPI32.dll_SetTokenInformation]
test eax, eax
jne 0x40cb79
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401d38
call fcn.0040c6bc
pop ecx
pop ecx
jmp 0x40ce2e
mov esi, 0x104
lea eax, [ebp - 0x218]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x40ce2e
cmp eax, esi
jae 0x40ce2e
mov dword [ebp - 0x428], ebx
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x420], ebx
mov dword [ebp - 0x41c], ebx
lea eax, [ebp - 0x418]
mov dword [ebp - 0x424], 0x200
mov dword [ebp - 0x41c], eax
mov byte [ebp - 4], 0x18
push 2
pop ebx
mov dword [ebp - 0x428], ebx
mov eax, dword [ebp - 0x41c]
xor ecx, ecx
mov word [eax], cx
mov byte [ebp - 4], 0x19
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x428]
call fcn.00410cfc
mov byte [ebp - 4], 0x1a
mov dword [ebp - 0x660], ebx
mov dword [ebp - 0x65c], ebx
mov dword [ebp - 0x658], 0x10
mov dword [ebp - 0x654], 0x402a40
mov byte [ebp - 4], 0x1b
push ecx
lea ecx, [ebp - 0x660]
call fcn.00410dad
mov byte [ebp - 4], 0x1c
lea eax, [ebp - 0x660]
push eax
lea ecx, [ebp - 0x428]
call fcn.004113d2
mov ebx, eax
neg ebx
sbb bl, bl
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x660]
call fcn.0040a64a
add bl, 1
je 0x40cc68
push ecx
lea ecx, [ebp - 0x428]
call fcn.0040a6d3
push 0x401d90
lea ecx, [ebp - 0x428]
call fcn.0040a609
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x8c8]
call fcn.0040a42d
mov byte [ebp - 4], 0x1d
mov ecx, 0x80
lea esi, [ebp - 0x418]
lea edi, [ebp - 0x8b8]
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 4], 0x1e
lea ecx, [ebp - 0x8c8]
push 0x401dcc
call fcn.0040a609
xor ebx, ebx
mov dword [ebp - 0x638], ebx
mov dword [ebp - 0x634], ebx
mov dword [ebp - 0x630], ebx
mov dword [ebp - 0x62c], ebx
lea eax, [ebp - 0x628]
mov dword [ebp - 0x634], 0x200
mov dword [ebp - 0x62c], eax
mov byte [ebp - 4], 0x1f
mov dword [ebp - 0x638], 2
mov eax, dword [ebp - 0x62c]
xor ecx, ecx
mov word [eax], cx
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0x8c8]
call fcn.0040a822
mov ecx, dword [ebp - 0x8c0]
mov eax, dword [ebp - 0x8c8]
not ecx
and ecx, 1
shr eax, cl
push eax
push ecx
lea ecx, [ebp - 0x638]
call fcn.0040a7da
mov edi, dword [ebp - 0x62c]
lea ecx, [ebp - 0x8c8]
call fcn.00410ead
mov esi, dword [ebp - 0x8bc]
lea ecx, [ebp - 0x8c8]
call fcn.0040a822
mov ecx, dword [ebp - 0x8c0]
mov eax, dword [ebp - 0x8c8]
not ecx
push 0xffffffffffffffff
and ecx, 1
push esi
shr eax, cl
push eax
push edi
call dword [sym.imp.ucrtbase_clr0400.dll_wcsncpy_s]
push 0x40
lea eax, [ebp - 0x6b4]
mov dword [ebp - 0x6b8], 0x44
push ebx
push eax
call sub.VCRUNTIME140_CLR0400.dll_memset
add esp, 0x1c
lea ecx, [ebp - 0x428]
call fcn.00410ead
mov edx, dword [ebp - 0x41c]
lea eax, [ebp - 0x670]
mov ecx, dword [ebp - 0x644]
push eax
lea eax, [ebp - 0x6b8]
push eax
sub esp, 0x18
push edi
call fcn.0040df06
test eax, eax
jne 0x40cdd0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401de8
call fcn.0040c6bc
pop ecx
pop ecx
jmp 0x40ce01
push dword [ebp - 0x670]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0x66c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0x668]
push dword [0x41a024]
push 0x401e40
call fcn.0040c6bc
add esp, 0xc
mov byte [ebp - 4], 0x1e
lea ecx, [ebp - 0x638]
call fcn.0040a64a
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x8c8]
call fcn.0040a64a
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x428]
call fcn.0040a64a
mov byte [ebp - 4], 2
cmp dword [ebp - 0x640], 0
je 0x40ce56
cmp dword [ebp - 0x644], 0
je 0x40ce50
push dword [ebp - 0x644]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x640], ebx
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x64c], 0
je 0x40ce8b
cmp dword [ebp - 0x650], 0
je 0x40ce78
push dword [ebp - 0x650]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x64c], ebx
jmp 0x40ce8b
push 0x401b70
call fcn.0040c6bc
pop ecx
call fcn.00415dbe
ret