Function at 0x405c00
Capabilities:
Get common file path
Get file system object information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x65ab34
mov eax, dword fs:[0]
push eax
sub esp, 0x868
mov eax, dword [0x6f7d14]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x79c], ecx
mov eax, dword [ebp - 0x79c]
cmp dword [eax + 0xbc], 0
je 0x405ed9
mov ecx, dword [ebp - 0x79c]
cmp dword [ecx + 0x1b4], 0
je 0x405ed9
push 0x14
call fcn.004eab18
add esp, 4
mov dword [ebp - 0x7c0], eax
mov dword [ebp - 4], 0
cmp dword [ebp - 0x7c0], 0
je 0x405c8a
mov ecx, dword [ebp - 0x7c0]
call fcn.00401e70
mov dword [ebp - 0x7c4], eax
jmp 0x405c94
mov dword [ebp - 0x7c4], 0
mov edx, dword [ebp - 0x7c4]
mov dword [ebp - 0x83c], edx
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x83c]
mov dword [ebp - 0x7a0], eax
mov ecx, dword [ebp - 0x7a0]
mov byte [ecx + 0x10], 4
mov dword [ebp - 0x808], 0
mov dword [ebp - 0x80c], 0
mov dword [ebp - 0x7b0], 0
lea edx, [ebp - 0x7b0]
push edx
push 0x28
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jl 0x405e87
push 0x208
push 0x160
lea eax, [ebp - 0x798]
push eax
push 0
mov ecx, dword [ebp - 0x7b0]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
test eax, eax
je 0x405d2d
lea edx, [ebp - 0x78c]
push edx
mov ecx, dword [ebp - 0x7a0]
add ecx, 8
call fcn.0040db70
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push 0x28
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jl 0x405e2a
lea ecx, [ebp - 0x218]
push ecx
mov ecx, dword [ebp - 0x7a0]
add ecx, 4
call fcn.0040db70
mov edx, dword [ebp - 0x7a0]
add edx, 4
push edx
mov ecx, dword [ebp - 0x79c]
add ecx, 0x88
call fcn.0040ebc0
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1d8]
mov dword [ebp - 0x860], edx
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x7c8]
call fcn.0040d7f0
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x7c8]
push ecx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x860]
mov dword [ebp - 0x808], eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x7c8]
call fcn.0040ed10
mov edx, dword [ebp - 0x79c]
mov eax, dword [edx]
mov ecx, dword [eax + 0x1e4]
mov dword [ebp - 0x864], ecx
lea edx, [ebp - 0x218]
push edx
lea ecx, [ebp - 0x7cc]
call fcn.0040d7f0
mov dword [ebp - 4], 2
lea eax, [ebp - 0x7cc]
push eax
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x864]
mov dword [ebp - 0x80c], eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x7cc]
call fcn.0040ed10
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x1b4]
mov dword [ebp - 0x868], edx
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax + 0x1b4]
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
mov dword [ebp - 0x86c], eax
mov ecx, dword [ebp - 0x7b0]
push ecx
mov edx, dword [ebp - 0x868]
push edx
call dword [ebp - 0x86c]
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax + 0x1b4]
mov edx, dword [ebp - 0x79c]
mov eax, dword [edx + 0x1b4]
mov ecx, dword [ecx]
push eax
mov edx, dword [ecx + 8]
call edx
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1f0]
mov dword [ebp - 0x870], edx
push 0
mov eax, dword [ebp - 0x80c]
push eax
mov ecx, dword [ebp - 0x808]
push ecx
push 0
mov edx, dword [ebp - 0x7a0]
push edx
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax + 0x94]
push ecx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x870]
mov edx, dword [ebp - 0x79c]
mov dword [edx + 0xa8], eax
mov eax, dword [ebp - 0x79c]
cmp dword [eax + 0xb8], 0
je 0x4061c6
mov ecx, dword [ebp - 0x79c]
cmp dword [ecx + 0x1b4], 0
je 0x4061c6
push 0x14
call fcn.004eab18
add esp, 4
mov dword [ebp - 0x804], eax
mov dword [ebp - 4], 3
cmp dword [ebp - 0x804], 0
je 0x405f32
mov ecx, dword [ebp - 0x804]
call fcn.00401e70
mov dword [ebp - 0x800], eax
jmp 0x405f3c
mov dword [ebp - 0x800], 0
mov edx, dword [ebp - 0x800]
mov dword [ebp - 0x814], edx
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x814]
mov dword [ebp - 0x7a4], eax
mov ecx, dword [ebp - 0x7a4]
mov byte [ecx + 0x10], 2
mov dword [ebp - 0x7d8], 0
mov dword [ebp - 0x7d4], 0
mov dword [ebp - 0x7b4], 0
lea edx, [ebp - 0x7b4]
push edx
push 5
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jl 0x406174
push 0x160
push 0
lea eax, [ebp - 0x638]
push eax
call fcn.00633f10
add esp, 0xc
push 0x208
push 0x160
lea ecx, [ebp - 0x638]
push ecx
push 0
mov edx, dword [ebp - 0x7b4]
push edx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
test eax, eax
je 0x405feb
lea eax, [ebp - 0x62c]
push eax
mov ecx, dword [ebp - 0x7a4]
add ecx, 8
call fcn.0040db70
mov ecx, 1
imul edx, ecx, 0
mov dword [ebp - 0x7fc], edx
cmp dword [ebp - 0x7fc], 0x104
jae 0x406007
jmp 0x40600c
call fcn.0062fd7e
mov eax, dword [ebp - 0x7fc]
mov byte [ebp + eax - 0x114], 0
lea ecx, [ebp - 0x114]
push ecx
push 0
push 0
push 5
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jl 0x406117
lea edx, [ebp - 0x114]
push edx
mov ecx, dword [ebp - 0x7a4]
add ecx, 4
call fcn.0040db70
mov eax, dword [ebp - 0x7a4]
add eax, 4
push eax
mov ecx, dword [ebp - 0x79c]
add ecx, 0x84
call fcn.0040ebc0
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x1d8]
mov dword [ebp - 0x818], eax
lea ecx, [ebp - 0x114]
push ecx
lea ecx, [ebp - 0x810]
call fcn.0040d7f0
mov dword [ebp - 4], 4
lea edx, [ebp - 0x810]
push edx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x818]
mov dword [ebp - 0x7d8], eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x810]
call fcn.0040ed10
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1e4]
mov dword [ebp - 0x81c], edx
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x7d0]
call fcn.0040d7f0
mov dword [ebp - 4], 5
lea ecx, [ebp - 0x7d0]
push ecx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x81c]
mov dword [ebp - 0x7d4], eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x7d0]
call fcn.0040ed10
mov edx, dword [ebp - 0x79c]
mov eax, dword [edx + 0x1b4]
mov dword [ebp - 0x820], eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x1b4]
mov eax, dword [edx]
mov ecx, dword [eax + 0x14]
mov dword [ebp - 0x824], ecx
mov edx, dword [ebp - 0x7b4]
push edx
mov eax, dword [ebp - 0x820]
push eax
call dword [ebp - 0x824]
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x1b4]
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax + 0x1b4]
mov edx, dword [edx]
push ecx
mov eax, dword [edx + 8]
call eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x1f0]
mov dword [ebp - 0x828], eax
push 0
mov ecx, dword [ebp - 0x7d4]
push ecx
mov edx, dword [ebp - 0x7d8]
push edx
push 0
mov eax, dword [ebp - 0x7a4]
push eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x94]
push edx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x828]
mov ecx, dword [ebp - 0x79c]
mov dword [ecx + 0xa0], eax
mov edx, dword [ebp - 0x79c]
cmp dword [edx + 0xb0], 0
je 0x4063e1
mov eax, dword [ebp - 0x79c]
cmp dword [eax + 0x1b4], 0
je 0x4063e1
push 0x14
call fcn.004eab18
add esp, 4
mov dword [ebp - 0x7dc], eax
mov dword [ebp - 4], 6
cmp dword [ebp - 0x7dc], 0
je 0x40621f
mov ecx, dword [ebp - 0x7dc]
call fcn.00401e70
mov dword [ebp - 0x7e0], eax
jmp 0x406229
mov dword [ebp - 0x7e0], 0
mov ecx, dword [ebp - 0x7e0]
mov dword [ebp - 0x82c], ecx
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x82c]
mov dword [ebp - 0x7b8], edx
mov eax, dword [ebp - 0x7b8]
mov byte [eax + 0x10], 3
mov dword [ebp - 0x7e8], 0
mov dword [ebp - 0x7e4], 0
mov dword [ebp - 0x7a8], 0
lea ecx, [ebp - 0x7a8]
push ecx
push 0x11
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jl 0x40638f
push 0x160
push 0
lea edx, [ebp - 0x4d8]
push edx
call fcn.00633f10
add esp, 0xc
push 0x208
push 0x160
lea eax, [ebp - 0x4d8]
push eax
push 0
mov ecx, dword [ebp - 0x7a8]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
test eax, eax
je 0x4062d8
lea edx, [ebp - 0x4cc]
push edx
mov ecx, dword [ebp - 0x7b8]
add ecx, 8
call fcn.0040db70
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1d0]
mov dword [ebp - 0x830], edx
mov eax, dword [ebp - 0x7a8]
push eax
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x830]
mov dword [ebp - 0x7e8], eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x1dc]
mov dword [ebp - 0x834], eax
mov ecx, dword [ebp - 0x7a8]
push ecx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x834]
mov dword [ebp - 0x7e4], eax
mov edx, dword [ebp - 0x79c]
mov eax, dword [edx + 0x1b4]
mov dword [ebp - 0x838], eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x1b4]
mov eax, dword [edx]
mov ecx, dword [eax + 0x14]
mov dword [ebp - 0x858], ecx
mov edx, dword [ebp - 0x7a8]
push edx
mov eax, dword [ebp - 0x838]
push eax
call dword [ebp - 0x858]
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x1b4]
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax + 0x1b4]
mov edx, dword [edx]
push ecx
mov eax, dword [edx + 8]
call eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x1f0]
mov dword [ebp - 0x840], eax
push 0
mov ecx, dword [ebp - 0x7e4]
push ecx
mov edx, dword [ebp - 0x7e8]
push edx
push 0
mov eax, dword [ebp - 0x7b8]
push eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x94]
push edx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x840]
mov ecx, dword [ebp - 0x79c]
mov dword [ecx + 0xa4], eax
mov edx, dword [ebp - 0x79c]
cmp dword [edx + 0xb0], 0
jne 0x40641f
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1c4]
mov dword [ebp - 0x844], edx
push 0
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax + 0x94]
push ecx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x844]
mov edx, dword [ebp - 0x79c]
cmp dword [edx + 0x140], 0
je 0x40663a
mov eax, dword [ebp - 0x79c]
cmp dword [eax + 0x1b4], 0
je 0x40663a
push 0x14
call fcn.004eab18
add esp, 4
mov dword [ebp - 0x7ec], eax
mov dword [ebp - 4], 7
cmp dword [ebp - 0x7ec], 0
je 0x406478
mov ecx, dword [ebp - 0x7ec]
call fcn.00401e70
mov dword [ebp - 0x7f0], eax
jmp 0x406482
mov dword [ebp - 0x7f0], 0
mov ecx, dword [ebp - 0x7f0]
mov dword [ebp - 0x848], ecx
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x848]
mov dword [ebp - 0x7bc], edx
mov eax, dword [ebp - 0x7bc]
mov byte [eax + 0x10], 1
mov dword [ebp - 0x7f8], 0
mov dword [ebp - 0x7f4], 0
mov dword [ebp - 0x7ac], 0
lea ecx, [ebp - 0x7ac]
push ecx
push 0x12
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jl 0x4065e8
push 0x160
push 0
lea edx, [ebp - 0x378]
push edx
call fcn.00633f10
add esp, 0xc
push 0x208
push 0x160
lea eax, [ebp - 0x378]
push eax
push 0
mov ecx, dword [ebp - 0x7ac]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
test eax, eax
je 0x406531
lea edx, [ebp - 0x36c]
push edx
mov ecx, dword [ebp - 0x7bc]
add ecx, 8
call fcn.0040db70
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1d0]
mov dword [ebp - 0x84c], edx
mov eax, dword [ebp - 0x7ac]
push eax
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x84c]
mov dword [ebp - 0x7f8], eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x1dc]
mov dword [ebp - 0x850], eax
mov ecx, dword [ebp - 0x7ac]
push ecx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x850]
mov dword [ebp - 0x7f4], eax
mov edx, dword [ebp - 0x79c]
mov eax, dword [edx + 0x1b4]
mov dword [ebp - 0x854], eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x1b4]
mov eax, dword [edx]
mov ecx, dword [eax + 0x14]
mov dword [ebp - 0x874], ecx
mov edx, dword [ebp - 0x7ac]
push edx
mov eax, dword [ebp - 0x854]
push eax
call dword [ebp - 0x874]
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x1b4]
mov eax, dword [ebp - 0x79c]
mov ecx, dword [eax + 0x1b4]
mov edx, dword [edx]
push ecx
mov eax, dword [edx + 8]
call eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x1f0]
mov dword [ebp - 0x85c], eax
push 0
mov ecx, dword [ebp - 0x7f4]
push ecx
mov edx, dword [ebp - 0x7f8]
push edx
push 0
mov eax, dword [ebp - 0x7bc]
push eax
mov ecx, dword [ebp - 0x79c]
mov edx, dword [ecx + 0x94]
push edx
mov ecx, dword [ebp - 0x79c]
call dword [ebp - 0x85c]
mov ecx, dword [ebp - 0x79c]
mov dword [ecx + 0x98], eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0062fc3e
mov esp, ebp
pop ebp
ret