Function at 0x4656c0
Capabilities:
Get common file path
Get startup folder

Disassembly:
sub esp, 0x18
mov eax, dword [0x547570]
push ebx
lea ecx, [esp + 0x18]
push esi
push ecx
push 0x1a
push 0
mov dword [esp + 0x14], eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov ebx, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jl 0x465822
mov edx, dword [esp + 0x1c]
push edi
push edx
lea ecx, [esp + 0x18]
call fcn.00510710
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x14]
push eax
call fcn.00511000
mov ecx, dword [esp + 0xc]
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov esi, eax
mov eax, dword [esi]
cmp ecx, eax
je 0x46575a
mov edx, dword [ecx - 0xc]
test edx, edx
jge 0x46572e
mov edx, dword [0x547574]
add ecx, 0xfffffff4
cmp ecx, edx
jne 0x465735
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x465745
mov ecx, dword [eax - 8]
push eax
push ecx
lea ecx, [esp + 0x14]
call fcn.00405870
jmp 0x46575a
lea ecx, [esp + 0xc]
call fcn.004124c0
mov esi, dword [esi]
mov dword [esp + 0xc], esi
add esi, 0xfffffff4
push esi
call edi
mov eax, dword [esp + 0x1c]
mov ecx, dword [0x547574]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x465785
add eax, 0xfffffff4
push eax
call ebx
test eax, eax
jg 0x465785
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff4
push eax
call fcn.00532222
add esp, 4
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx - 8]
test eax, eax
jne 0x465818
lea edx, [esp + 0x1c]
push edx
call fcn.004b7e30
mov ecx, dword [esp + 0x10]
mov esi, eax
add esp, 4
mov eax, dword [esi]
cmp ecx, eax
je 0x4657ed
mov edx, dword [ecx - 0xc]
test edx, edx
jge 0x4657c1
mov edx, dword [0x547574]
add ecx, 0xfffffff4
cmp ecx, edx
jne 0x4657c8
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x4657d8
push eax
mov eax, dword [eax - 8]
push eax
lea ecx, [esp + 0x14]
call fcn.00405870
jmp 0x4657ed
lea ecx, [esp + 0xc]
call fcn.004124c0
mov esi, dword [esi]
mov dword [esp + 0xc], esi
add esi, 0xfffffff4
push esi
call edi
mov eax, dword [esp + 0x1c]
mov edx, dword [0x547574]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x465818
add eax, 0xfffffff4
push eax
call ebx
test eax, eax
jg 0x465818
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff4
push edx
call fcn.00532222
add esp, 4
lea ecx, [esp + 0x14]
call fcn.00510740
pop edi
mov eax, dword [0x547570]
mov ecx, 0x548318
test ecx, ecx
mov dword [esp + 0xc], eax
je 0x46586e
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
test esi, esi
je 0x46586e
push esi
lea ecx, [esp + 0x10]
call fcn.00405530
test eax, eax
je 0x46586e
mov edx, dword [esp + 0xc]
inc esi
push esi
push 0x548318
push edx
call fcn.00405400
add esp, 0xc
lea ecx, [esp + 0xc]
push 0xffffffffffffffff
call fcn.00405bb0
mov eax, dword [0x547570]
mov dword [esp + 0x10], eax
mov eax, dword [0x55e100]
push eax
mov ecx, dword [eax - 8]
mov eax, dword [esp + 0x10]
push ecx
push eax
mov edx, dword [eax - 8]
lea ecx, [esp + 0x1c]
push edx
call fcn.004059f0
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
call fcn.00405440
lea ecx, [esp + 0x10]
call fcn.00405700
mov eax, dword [esp + 0x18]
push eax
mov ecx, dword [eax - 8]
push ecx
lea ecx, [esp + 0x10]
call fcn.00405a90
mov eax, dword [esp + 0x18]
mov ecx, dword [0x547574]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x4658e7
add eax, 0xfffffff4
push eax
call ebx
test eax, eax
jg 0x4658e7
mov eax, dword [esp + 0x18]
add eax, 0xfffffff4
push eax
call fcn.00532222
add esp, 4
mov eax, dword [esp + 0xc]
mov edx, dword [0x547574]
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x465912
add eax, 0xfffffff4
push eax
call ebx
test eax, eax
jg 0x465912
mov edx, dword [esp + 0xc]
add edx, 0xfffffff4
push edx
call fcn.00532222
add esp, 4
lea eax, [esp + 8]
push eax
call fcn.004b9eb0
add esp, 4
lea ecx, [esp + 8]
push 0x104
call fcn.00413470
push eax
call fcn.0040ba10
mov esi, dword [esp + 0x28]
add esp, 4
lea ecx, [esp + 8]
push ecx
mov ecx, esi
call fcn.00405440
lea ecx, [esp + 8]
call fcn.00405700
mov eax, esi
pop esi
pop ebx
add esp, 0x18
ret