Function at 0x40c806
Capabilities:
Get common file path

Disassembly:
push 0x8bc
mov eax, 0x416a29
call fcn.00415da4
push 0x401a28
call fcn.0040c66c
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 0x40c88c
cmp byte [0x41a56f], al
jne 0x40c888
push ebx
push ebx
push 0x402878
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
je 0x40c86b
push 0x4028a4
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [0x41a570], esi
jmp 0x40c871
mov esi, dword [0x41a570]
mov byte [0x41a56f], 1
test esi, esi
jne 0x40c88c
mov edi, dword [ebp - 0x63c]
mov eax, dword [ebp - 0x648]
mov ecx, ebx
jmp 0x40c8b6
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 0x40c8d1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401a70
call fcn.0040c66c
pop ecx
jmp 0x40ce3a
mov ecx, ebx
test eax, eax
je 0x40c8f3
lea edx, [edi + 8]
cmp dword [edx], ebx
je 0x40c8e8
inc ecx
add edx, 0xc
cmp ecx, eax
jb 0x40c8da
jmp 0x40c8f3
imul eax, ecx, 0xc
mov eax, dword [eax + edi]
mov dword [0x41a024], eax
mov esi, dword [0x41a568]
test esi, esi
jne 0x40c93d
cmp byte [0x41a56d], bl
jne 0x40c948
push ebx
push ebx
push 0x402878
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
je 0x40c92c
push 0x402894
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [0x41a568], esi
jmp 0x40c932
mov esi, dword [0x41a568]
mov byte [0x41a56d], 1
test esi, esi
je 0x40c948
push edi
mov ecx, esi
call dword [0x41b25c]
call esi
mov eax, dword [0x41a024]
mov dword [ebp - 0x63c], ebx
cmp eax, 0xffffffff
je 0x40c960
push eax
push 0x401ae8
jmp 0x40c9b8
push 0x401b20
call fcn.0040c66c
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 0x40ce30
sub ecx, 1
je 0x40c9ad
push eax
push 0x401c08
jmp 0x40c8c6
push dword [0x41a024]
push 0x401bc4
call fcn.0040c66c
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.0040db03
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 0x40ca44
cmp byte [0x41a580], 0
jne 0x40ca3e
push esi
push esi
push 0x40280c
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test eax, eax
je 0x40ca2d
push 0x4028d4
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [0x41a554], esi
jmp 0x40ca33
mov esi, dword [0x41a554]
mov byte [0x41a580], 1
test esi, esi
jne 0x40ca44
xor ebx, ebx
mov eax, ebx
jmp 0x40ca57
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 0x40ca6d
mov dword [ecx + 4], 1
test eax, eax
jne 0x40ca89
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401c70
call fcn.0040c66c
pop ecx
pop ecx
jmp 0x40ce06
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.0040db03
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 0x40cae6
mov dword [eax + 4], 1
test cl, cl
je 0x40caf8
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401cd0
jmp 0x40cb1d
push 4
push 0x41a024
push 0xc
push dword [ebp - 0x644]
call dword [sym.imp.ADVAPI32.dll_SetTokenInformation]
test eax, eax
jne 0x40cb29
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401d38
call fcn.0040c66c
pop ecx
pop ecx
jmp 0x40cdde
mov esi, 0x104
lea eax, [ebp - 0x218]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x40cdde
cmp eax, esi
jae 0x40cdde
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.00410c7c
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.00410d2d
mov byte [ebp - 4], 0x1c
lea eax, [ebp - 0x660]
push eax
lea ecx, [ebp - 0x428]
call fcn.00411352
mov ebx, eax
neg ebx
sbb bl, bl
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x660]
call fcn.0040a5fa
add bl, 1
je 0x40cc18
push ecx
lea ecx, [ebp - 0x428]
call fcn.0040a683
push 0x401d90
lea ecx, [ebp - 0x428]
call fcn.0040a5b9
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x8c8]
call fcn.0040a3dd
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.0040a5b9
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.0040a7d2
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.0040a78a
mov edi, dword [ebp - 0x62c]
lea ecx, [ebp - 0x8c8]
call fcn.00410e2d
mov esi, dword [ebp - 0x8bc]
lea ecx, [ebp - 0x8c8]
call fcn.0040a7d2
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.00410e2d
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.0040de86
test eax, eax
jne 0x40cd80
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x401de8
call fcn.0040c66c
pop ecx
pop ecx
jmp 0x40cdb1
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.0040c66c
add esp, 0xc
mov byte [ebp - 4], 0x1e
lea ecx, [ebp - 0x638]
call fcn.0040a5fa
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x8c8]
call fcn.0040a5fa
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x428]
call fcn.0040a5fa
mov byte [ebp - 4], 2
cmp dword [ebp - 0x640], 0
je 0x40ce06
cmp dword [ebp - 0x644], 0
je 0x40ce00
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 0x40ce3b
cmp dword [ebp - 0x650], 0
je 0x40ce28
push dword [ebp - 0x650]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x64c], ebx
jmp 0x40ce3b
push 0x401b70
call fcn.0040c66c
pop ecx
call fcn.00415d4e
ret