Function at 0x46a920
Capabilities:
Get common file path

Disassembly:
sub esp, 0x14
mov eax, dword [0x546560]
push ebx
mov ebx, ecx
push esi
mov ecx, 0x553dd8
push edi
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x46a976
push ecx
call edi
mov esi, eax
test esi, esi
je 0x46a976
push esi
lea ecx, [esp + 0x14]
call fcn.00405530
test eax, eax
je 0x46a976
mov edx, dword [esp + 0x10]
inc esi
push esi
push 0x553dd8
push edx
call fcn.00405400
add esp, 0xc
lea ecx, [esp + 0x10]
push 0xffffffffffffffff
call fcn.00405bb0
mov eax, dword [0x546560]
mov ecx, 0x553dd8
test ecx, ecx
mov dword [esp + 0xc], eax
je 0x46a9be
push ecx
call edi
mov esi, eax
test esi, esi
je 0x46a9be
push esi
lea ecx, [esp + 0x10]
call fcn.00405530
test eax, eax
je 0x46a9be
mov edx, dword [esp + 0xc]
inc esi
push esi
push 0x553dd8
push edx
call fcn.00405400
add esp, 0xc
lea ecx, [esp + 0xc]
push 0xffffffffffffffff
call fcn.00405bb0
call fcn.00502ee0
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x46ab09
lea eax, [esp + 0x14]
push 0x46
push eax
call fcn.004bc8d0
lea ecx, [esp + 0x24]
push 0xbf
push ecx
call fcn.004bc8d0
mov eax, dword [eax]
mov edx, dword [esp + 0x24]
add esp, 0x10
push 0x43
push eax
mov eax, dword [ebx + 4]
push edx
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
mov edx, dword [0x546564]
mov esi, eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46aa30
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x46aa30
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff4
push edx
call fcn.00531732
add esp, 4
cmp esi, 2
jne 0x46aac5
mov eax, dword [esp + 0x14]
mov edx, dword [0x546564]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46aa64
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x46aa64
mov edx, dword [esp + 0x14]
add edx, 0xfffffff4
push edx
call fcn.00531732
add esp, 4
mov eax, dword [esp + 0xc]
mov edx, dword [0x546564]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46aa8f
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x46aa8f
mov edx, dword [esp + 0xc]
add edx, 0xfffffff4
push edx
call fcn.00531732
add esp, 4
mov eax, dword [esp + 0x10]
mov edx, dword [0x546564]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46aaba
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x46aaba
mov edx, dword [esp + 0x10]
add edx, 0xfffffff4
push edx
call fcn.00531732
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x14
ret 0x10
cmp esi, 6
jne 0x46aade
call fcn.00461820
cmp eax, 1
jne 0x46aade
push 0
call fcn.00502ef0
add esp, 4
mov eax, dword [esp + 0x14]
mov edx, dword [0x546564]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46ab09
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x46ab09
mov edx, dword [esp + 0x14]
add edx, 0xfffffff4
push edx
call fcn.00531732
add esp, 4
cmp word [esp + 0x28], 0x8034
jne 0x46abcd
lea eax, [esp + 0x1c]
push eax
push 0
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jl 0x46abcd
mov ecx, dword [esp + 0x1c]
push ecx
lea ecx, [esp + 0x18]
call fcn.0050fe10
lea edx, [esp + 0x28]
lea ecx, [esp + 0x14]
push edx
call fcn.00510700
mov ecx, dword [esp + 0xc]
mov esi, eax
mov eax, dword [esi]
cmp ecx, eax
je 0x46ab99
mov edx, dword [ecx - 0xc]
test edx, edx
jge 0x46ab69
mov edx, dword [0x546564]
add ecx, 0xfffffff4
cmp ecx, edx
jne 0x46ab70
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x46ab80
push eax
mov eax, dword [eax - 8]
push eax
lea ecx, [esp + 0x14]
call fcn.00405870
jmp 0x46ab99
lea ecx, [esp + 0xc]
call fcn.00412670
mov esi, dword [esi]
mov dword [esp + 0xc], esi
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x28]
mov edx, dword [0x546564]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x46abc4
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x46abc4
mov edx, dword [esp + 0x28]
add edx, 0xfffffff4
push edx
call fcn.00531732
add esp, 4
lea ecx, [esp + 0x14]
call fcn.0050fe40
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
push eax
call fcn.00405440
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
push edx
call fcn.00405440
mov ecx, ebx
call fcn.0046ac10
lea ecx, [esp + 0xc]
mov esi, eax
call fcn.00405700
lea ecx, [esp + 0x10]
call fcn.00405700
mov eax, esi
pop edi
pop esi
pop ebx
add esp, 0x14
ret 0x10