Function at 0x41c650
Capabilities:
Get common file path
Get file system object information
Get session user name
Get startup folder

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x581b57
mov eax, dword fs:[0]
push eax
sub esp, 0x568
mov eax, dword [0x61b660]
xor eax, ebp
mov dword [ebp - 0x1c], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x54c], ecx
push 1
push 8
lea eax, [ebp - 0x124]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
lea ecx, [ebp - 0x124]
push ecx
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x4dc], eax
mov edx, dword [ebp - 0x4dc]
push edx
lea eax, [ebp - 0x124]
push eax
mov ecx, dword [ebp - 0x54c]
add ecx, 0x170
call fcn.004064c0
mov byte [ebp - 0x33c], 0
push 0x103
push 0
lea ecx, [ebp - 0x33b]
push ecx
call fcn.00529d40
add esp, 0xc
mov dword [ebp - 0x340], 0
mov dword [ebp - 4], 0
lea edx, [ebp - 0x340]
push edx
push 0x5eaa34
push 0
call dword [sym.imp.SHELL32.dll_SHGetImageList]
push 0x3c
call fcn.0042a49a
add esp, 4
mov dword [ebp - 0x4b8], eax
mov byte [ebp - 4], 1
cmp dword [ebp - 0x4b8], 0
je 0x41c759
mov ecx, dword [ebp - 0x4b8]
add ecx, 4
call fcn.0040e370
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x4b8]
add ecx, 0x20
call fcn.0040e370
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x4b8]
mov dword [ebp - 0x550], eax
jmp 0x41c763
mov dword [ebp - 0x550], 0
mov ecx, dword [ebp - 0x550]
mov dword [ebp - 0x4b4], ecx
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x4b4]
mov dword [ebp - 0x4b0], edx
lea eax, [ebp - 0x344]
push eax
push 0x28
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
lea ecx, [ebp - 0x33c]
push ecx
mov edx, dword [ebp - 0x344]
push edx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov eax, dword [ebp - 0x4b0]
add eax, 0x20
mov dword [ebp - 0x4e4], eax
lea ecx, [ebp - 0x33c]
push ecx
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x4e0], eax
mov edx, dword [ebp - 0x4e0]
push edx
lea eax, [ebp - 0x33c]
push eax
mov ecx, dword [ebp - 0x4e4]
call fcn.004064c0
mov dword [ebp - 0x10], 0x104
mov byte [ebp - 0x234], 0
push 0x103
push 0
lea ecx, [ebp - 0x233]
push ecx
call fcn.00529d40
add esp, 0xc
lea edx, [ebp - 0x10]
push edx
lea eax, [ebp - 0x234]
push eax
call dword [sym.imp.ADVAPI32.dll_GetUserNameA]
test eax, eax
jne 0x41c855
mov ecx, dword [ebp - 0x4b0]
add ecx, 4
mov dword [ebp - 0x4ec], ecx
push str.Administrator
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x4e8], eax
mov edx, dword [ebp - 0x4e8]
push edx
push str.Administrator
mov ecx, dword [ebp - 0x4ec]
call fcn.004064c0
jmp 0x41c892
mov eax, dword [ebp - 0x4b0]
add eax, 4
mov dword [ebp - 0x4f4], eax
lea ecx, [ebp - 0x234]
push ecx
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x4f0], eax
mov edx, dword [ebp - 0x4f0]
push edx
lea eax, [ebp - 0x234]
push eax
mov ecx, dword [ebp - 0x4f4]
call fcn.004064c0
push 0x4100
push 0x160
lea ecx, [ebp - 0x4a4]
push ecx
push 0
lea edx, [ebp - 0x33c]
push edx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
mov eax, dword [ebp - 0x340]
mov dword [ebp - 0x554], eax
mov ecx, dword [ebp - 0x4b0]
push ecx
push 0
mov edx, dword [ebp - 0x4a0]
push edx
mov eax, dword [ebp - 0x554]
push eax
mov ecx, dword [ebp - 0x554]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
call eax
lea ecx, [ebp - 0x4b0]
push ecx
mov ecx, dword [ebp - 0x54c]
add ecx, 0x160
call fcn.00425bb0
push 0x3c
call fcn.0042a49a
add esp, 4
mov dword [ebp - 0x4c0], eax
mov byte [ebp - 4], 3
cmp dword [ebp - 0x4c0], 0
je 0x41c949
mov ecx, dword [ebp - 0x4c0]
add ecx, 4
call fcn.0040e370
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x4c0]
add ecx, 0x20
call fcn.0040e370
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x4c0]
mov dword [ebp - 0x558], edx
jmp 0x41c953
mov dword [ebp - 0x558], 0
mov eax, dword [ebp - 0x558]
mov dword [ebp - 0x4bc], eax
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x4bc]
mov dword [ebp - 0x128], ecx
lea edx, [ebp - 0x344]
push edx
push 0x27
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
lea eax, [ebp - 0x33c]
push eax
mov ecx, dword [ebp - 0x344]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov edx, dword [ebp - 0x128]
add edx, 0x20
mov dword [ebp - 0x500], edx
lea eax, [ebp - 0x33c]
push eax
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x4fc], eax
mov ecx, dword [ebp - 0x4fc]
push ecx
lea edx, [ebp - 0x33c]
push edx
mov ecx, dword [ebp - 0x500]
call fcn.004064c0
mov eax, dword [ebp - 0x128]
add eax, 4
mov dword [ebp - 0x508], eax
push 0x5c24ac
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x504], eax
mov ecx, dword [ebp - 0x504]
push ecx
push 0x5c24ac
mov ecx, dword [ebp - 0x508]
call fcn.004064c0
push 0x4108
push 0x160
lea edx, [ebp - 0x4a4]
push edx
push 0
mov eax, dword [ebp - 0x344]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
mov ecx, dword [ebp - 0x340]
mov dword [ebp - 0x55c], ecx
mov edx, dword [ebp - 0x128]
push edx
push 0
mov eax, dword [ebp - 0x4a0]
push eax
mov ecx, dword [ebp - 0x55c]
push ecx
mov edx, dword [ebp - 0x55c]
mov eax, dword [edx]
mov ecx, dword [eax + 0x28]
call ecx
lea edx, [ebp - 0x128]
push edx
mov ecx, dword [ebp - 0x54c]
add ecx, 0x160
call fcn.00425bb0
push 0x3c
call fcn.0042a49a
add esp, 4
mov dword [ebp - 0x4c8], eax
mov byte [ebp - 4], 5
cmp dword [ebp - 0x4c8], 0
je 0x41cac1
mov ecx, dword [ebp - 0x4c8]
add ecx, 4
call fcn.0040e370
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x4c8]
add ecx, 0x20
call fcn.0040e370
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x4c8]
mov dword [ebp - 0x560], eax
jmp 0x41cacb
mov dword [ebp - 0x560], 0
mov ecx, dword [ebp - 0x560]
mov dword [ebp - 0x4c4], ecx
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x4c4]
mov dword [ebp - 0x4ac], edx
lea eax, [ebp - 0x344]
push eax
push 5
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
lea ecx, [ebp - 0x33c]
push ecx
mov edx, dword [ebp - 0x344]
push edx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov eax, dword [ebp - 0x4ac]
add eax, 0x20
mov dword [ebp - 0x514], eax
lea ecx, [ebp - 0x33c]
push ecx
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x510], eax
mov edx, dword [ebp - 0x510]
push edx
lea eax, [ebp - 0x33c]
push eax
mov ecx, dword [ebp - 0x514]
call fcn.004064c0
mov ecx, dword [ebp - 0x4ac]
add ecx, 4
mov dword [ebp - 0x51c], ecx
push 0x5c24a0
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x518], eax
mov edx, dword [ebp - 0x518]
push edx
push 0x5c24a0
mov ecx, dword [ebp - 0x51c]
call fcn.004064c0
push 0x4108
push 0x160
lea eax, [ebp - 0x4a4]
push eax
push 0
mov ecx, dword [ebp - 0x344]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
mov edx, dword [ebp - 0x340]
mov dword [ebp - 0x564], edx
mov eax, dword [ebp - 0x4ac]
push eax
push 0
mov ecx, dword [ebp - 0x4a0]
push ecx
mov edx, dword [ebp - 0x564]
push edx
mov eax, dword [ebp - 0x564]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x28]
call edx
lea eax, [ebp - 0x4ac]
push eax
mov ecx, dword [ebp - 0x54c]
add ecx, 0x160
call fcn.00425bb0
push 0x3c
call fcn.0042a49a
add esp, 4
mov dword [ebp - 0x4d0], eax
mov byte [ebp - 4], 7
cmp dword [ebp - 0x4d0], 0
je 0x41cc39
mov ecx, dword [ebp - 0x4d0]
add ecx, 4
call fcn.0040e370
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x4d0]
add ecx, 0x20
call fcn.0040e370
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x4d0]
mov dword [ebp - 0x568], ecx
jmp 0x41cc43
mov dword [ebp - 0x568], 0
mov edx, dword [ebp - 0x568]
mov dword [ebp - 0x4cc], edx
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x4cc]
mov dword [ebp - 0x4a8], eax
lea ecx, [ebp - 0x344]
push ecx
push 0x11
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
lea edx, [ebp - 0x33c]
push edx
mov eax, dword [ebp - 0x344]
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov ecx, dword [ebp - 0x4a8]
add ecx, 0x20
mov dword [ebp - 0x528], ecx
push str.::20D04FE0_3AEA_1069_A2D8_08002B30309D
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x524], eax
mov edx, dword [ebp - 0x524]
push edx
push str.::20D04FE0_3AEA_1069_A2D8_08002B30309D
mov ecx, dword [ebp - 0x528]
call fcn.004064c0
mov eax, dword [ebp - 0x4a8]
add eax, 4
mov dword [ebp - 0x530], eax
push 0x5c2498
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x52c], eax
mov ecx, dword [ebp - 0x52c]
push ecx
push 0x5c2498
mov ecx, dword [ebp - 0x530]
call fcn.004064c0
push 0x4108
push 0x160
lea edx, [ebp - 0x4a4]
push edx
push 0
mov eax, dword [ebp - 0x344]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x340]
mov dword [ebp - 0x56c], ecx
mov edx, dword [ebp - 0x4a8]
push edx
push 1
mov eax, dword [ebp - 0x4a0]
push eax
mov ecx, dword [ebp - 0x56c]
push ecx
mov edx, dword [ebp - 0x56c]
mov eax, dword [edx]
mov ecx, dword [eax + 0x28]
call ecx
lea edx, [ebp - 0x4a8]
push edx
mov ecx, dword [ebp - 0x54c]
add ecx, 0x160
call fcn.00425bb0
push 0x3c
call fcn.0042a49a
add esp, 4
mov dword [ebp - 0x4d8], eax
mov byte [ebp - 4], 9
cmp dword [ebp - 0x4d8], 0
je 0x41cdb0
mov ecx, dword [ebp - 0x4d8]
add ecx, 4
call fcn.0040e370
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x4d8]
add ecx, 0x20
call fcn.0040e370
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x4d8]
mov dword [ebp - 0x570], eax
jmp 0x41cdba
mov dword [ebp - 0x570], 0
mov ecx, dword [ebp - 0x570]
mov dword [ebp - 0x4d4], ecx
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x4d4]
mov dword [ebp - 0x14], edx
lea eax, [ebp - 0x344]
push eax
push 0xd
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
lea ecx, [ebp - 0x33c]
push ecx
mov edx, dword [ebp - 0x344]
push edx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov eax, dword [ebp - 0x14]
add eax, 0x20
mov dword [ebp - 0x53c], eax
lea ecx, [ebp - 0x33c]
push ecx
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x538], eax
mov edx, dword [ebp - 0x538]
push edx
lea eax, [ebp - 0x33c]
push eax
mov ecx, dword [ebp - 0x53c]
call fcn.004064c0
mov ecx, dword [ebp - 0x14]
add ecx, 4
mov dword [ebp - 0x544], ecx
push 0x5c2490
call fcn.005291f0
add esp, 4
mov dword [ebp - 0x540], eax
mov edx, dword [ebp - 0x540]
push edx
push 0x5c2490
mov ecx, dword [ebp - 0x544]
call fcn.004064c0
push 0x4108
push 0x160
lea eax, [ebp - 0x4a4]
push eax
push 0
mov ecx, dword [ebp - 0x344]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
mov edx, dword [ebp - 0x340]
mov dword [ebp - 0x574], edx
mov eax, dword [ebp - 0x14]
push eax
push 1
mov ecx, dword [ebp - 0x4a0]
push ecx
mov edx, dword [ebp - 0x574]
push edx
mov eax, dword [ebp - 0x574]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x28]
call edx
lea eax, [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x54c]
add ecx, 0x160
call fcn.00425bb0
mov ecx, dword [ebp - 0x340]
mov dword [ebp - 0x548], ecx
cmp dword [ebp - 0x548], 0
je 0x41cefd
mov dword [ebp - 0x340], 0
mov edx, dword [ebp - 0x548]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x548]
push ecx
mov edx, dword [eax + 8]
call edx
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x340], 0
je 0x41cf21
mov eax, dword [ebp - 0x340]
mov ecx, dword [ebp - 0x340]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 8]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x1c]
xor ecx, ebp
call fcn.0052927b
mov esp, ebp
pop ebp
ret