Function at 0x46c160
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6a2ad6
mov eax, dword fs:[0]
push eax
mov eax, 0x121c
call fcn.0063ac90
mov eax, dword [0x76f950]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov dword [ebp - 0x1220], esi
mov ebx, ecx
mov eax, dword [ebp + 8]
mov edi, dword [sym.imp.KERNEL32.dll_SearchPathW]
mov dword [ebp - 0x121c], eax
lea eax, [ebp - 0x1218]
push eax
lea eax, [ebp - 0x1010]
push eax
push 0x3ff
push 0
push esi
push 0
mov dword [ebp - 0x1218], 0
call edi
test eax, eax
setne al
mov byte [ebp - 0x1211], al
test al, al
jne 0x46c3da
push 0x3ff
lea eax, [ebp - 0x810]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea ecx, [ebp - 0x810]
add ecx, 0xfffffffe
lea ecx, [ecx]
mov ax, word [ecx + 2]
lea ecx, [ecx + 2]
test ax, ax
jne 0x46c200
mov eax, dword [0x6ed164]
mov dword [ecx], eax
mov eax, dword [0x6ed168]
mov dword [ecx + 4], eax
mov eax, dword [0x6ed16c]
mov dword [ecx + 8], eax
mov eax, dword [0x6ed170]
mov dword [ecx + 0xc], eax
mov ax, word [0x6ed174]
mov word [ecx + 0x10], ax
lea eax, [ebp - 0x1218]
push eax
lea eax, [ebp - 0x1010]
push eax
push 0x3ff
push 0
push esi
lea eax, [ebp - 0x810]
push eax
call edi
test eax, eax
setne al
mov byte [ebp - 0x1211], al
test al, al
jne 0x46c3da
mov edi, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
push 0x3ff
lea eax, [ebp - 0x810]
push eax
call edi
lea ecx, [ebp - 0x810]
add ecx, 0xfffffffe
mov ax, word [ecx + 2]
lea ecx, [ecx + 2]
test ax, ax
jne 0x46c284
mov eax, dword [0x6ed108]
mov dword [ecx], eax
mov eax, dword [0x6ed10c]
mov dword [ecx + 4], eax
mov eax, dword [0x6ed110]
mov dword [ecx + 8], eax
mov eax, dword [0x6ed114]
mov dword [ecx + 0xc], eax
mov eax, dword [0x6ed118]
mov dword [ecx + 0x10], eax
lea eax, [ebp - 0x1218]
push eax
lea eax, [ebp - 0x1010]
push eax
push 0x3ff
push 0
push esi
lea eax, [ebp - 0x810]
push eax
call dword [sym.imp.KERNEL32.dll_SearchPathW]
test eax, eax
setne al
mov byte [ebp - 0x1211], al
test al, al
jne 0x46c3da
push 0x3ff
lea eax, [ebp - 0x810]
push eax
call edi
lea edi, [ebp - 0x810]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x46c304
lea eax, [ebp - 0x1218]
push eax
lea eax, [ebp - 0x1010]
push eax
push 0x3ff
mov ecx, 9
mov esi, 0x6ed11c
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x1220]
push 0
push edi
lea eax, [ebp - 0x810]
push eax
call dword [sym.imp.KERNEL32.dll_SearchPathW]
test eax, eax
setne al
mov byte [ebp - 0x1211], al
test al, al
jne 0x46c3da
test edi, edi
jne 0x46c360
xor esi, esi
jmp 0x46c37b
cmp word [edi], 0
jne 0x46c36a
xor esi, esi
jmp 0x46c37b
call fcn.004df4c0
mov esi, eax
push 0xffffffffffffffff
push edi
mov ecx, esi
call fcn.0040bb30
mov dword [ebp - 0x1224], esi
mov dword [ebp - 4], 1
test esi, esi
je 0x46c3b1
mov eax, dword [ebx]
test eax, eax
je 0x46c39e
cmp dword [eax], 0
je 0x46c39e
mov ecx, ebx
call fcn.004db0b0
mov edx, dword [esi + 4]
test edx, edx
jne 0x46c3a8
lea edx, [esi + 8]
mov ecx, dword [ebx]
call fcn.004dfa30
mov dword [ebx], eax
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x46c511
mov eax, dword [esi]
test eax, eax
jne 0x46c3d2
mov ecx, esi
call fcn.004df580
jmp 0x46c511
dec eax
mov dword [esi], eax
jmp 0x46c511
cmp word [ebp - 0x1010], 0
jne 0x46c3e8
xor esi, esi
jmp 0x46c3ff
call fcn.004df4c0
mov esi, eax
push 0xffffffffffffffff
lea eax, [ebp - 0x1010]
push eax
mov ecx, esi
call fcn.0040bb30
mov dword [ebp - 0x1224], esi
mov dword [ebp - 4], 0
test esi, esi
je 0x46c435
mov eax, dword [ebx]
test eax, eax
je 0x46c422
cmp dword [eax], 0
je 0x46c422
mov ecx, ebx
call fcn.004db0b0
mov edx, dword [esi + 4]
test edx, edx
jne 0x46c42c
lea edx, [esi + 8]
mov ecx, dword [ebx]
call fcn.004dfa30
mov dword [ebx], eax
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x46c452
mov eax, dword [esi]
test eax, eax
jne 0x46c44f
mov ecx, esi
call fcn.004df580
jmp 0x46c452
dec eax
mov dword [esi], eax
mov esi, dword [ebp - 0x121c]
test esi, esi
je 0x46c479
mov eax, dword [ebx]
test eax, eax
je 0x46c46e
cmp dword [eax], 0
je 0x46c46e
mov ecx, ebx
call fcn.004db0b0
mov ecx, dword [ebx]
mov edx, esi
call fcn.004dfa30
mov dword [ebx], eax
lea eax, [ebp - 0x121c]
push eax
lea eax, [ebp - 0x1220]
push eax
lea eax, [ebp - 0x1228]
push eax
lea edx, [ebp - 0x1224]
lea ecx, [ebp - 0x1010]
call fcn.00421f70
add esp, 0xc
test al, al
je 0x46c4f1
push dword [ebp - 0x121c]
lea eax, [ebp - 0x1210]
push dword [ebp - 0x1220]
push dword [ebp - 0x1228]
push dword [ebp - 0x1224]
push str.version__d._d._d._d
push 0x100
push eax
call fcn.0063439c
mov eax, dword [ebx]
add esp, 0x1c
test eax, eax
je 0x46c4e9
cmp dword [eax], 0
je 0x46c4e9
mov ecx, ebx
call fcn.004db0b0
lea edx, [ebp - 0x1210]
jmp 0x46c508
mov eax, dword [ebx]
test eax, eax
je 0x46c503
cmp dword [eax], 0
je 0x46c503
mov ecx, ebx
call fcn.004db0b0
mov edx, str.version_unknown
mov ecx, dword [ebx]
call fcn.004dfa30
mov dword [ebx], eax
mov al, byte [ebp - 0x1211]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00633732
mov esp, ebp
pop ebp
ret