Function at 0x4057d0
Capabilities:
Get common file path
Set current directory

Disassembly:
mov eax, 0xa3dc
call fcn.004f2630
push ebx
push ebp
push esi
push edi
push 0x180
call fcn.004f266a
mov dword [esp + 0x20], eax
lea eax, [esp + 0x20]
push eax
call fcn.00404a50
mov ecx, dword [esp + 0x24]
push ecx
call fcn.004fa6c0
add esp, 0xc
lea edx, [esp + 0x268]
mov dword [esp + 0x20], eax
push 0x104
push edx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x164]
lea edx, [esp + 0x164]
rep stosd dword es:[edi], eax
or ecx, 0xffffffff
lea edi, [esp + 0x268]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0x164]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.Profiles_
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x268]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.Start_MenuPrograms
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x164]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, 0xf558a0
call fcn.004f0087
push 0x402150
push 0xa
mov ecx, eax
call fcn.004eff40
mov ecx, eax
call fcn.004016a0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x23ec]
push ecx
lea eax, [esp + 0x168]
xor ebx, ebx
push edx
push eax
mov dword [esp + 0x20], ebx
call fcn.00405000
mov edx, dword [esp + 0x20]
add esp, 0xc
cmp edx, ebx
mov dword [esp + 0x18], ebx
jle 0x405a73
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x10]
lea ebp, [esp + ecx + 0x23ec]
mov ecx, 0xf558a0
push ebp
call fcn.004f0087
push 0x402150
push 0xa
mov ecx, eax
call fcn.004eff40
mov ecx, eax
call fcn.004016a0
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x24]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x36c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x24]
push ecx
push str._sStart_MenuPrograms
push edx
call fcn.004f175f
lea edi, [esp + 0x378]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebp
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0xf558a0
call fcn.004f0087
push 0x402150
push 0xa
mov ecx, eax
call fcn.004eff40
mov ecx, eax
call fcn.004016a0
lea edi, [esp + 0x24]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, ecx
lea eax, [edx - 1]
test eax, eax
jle 0x4059e0
cmp byte [esp + eax + 0x24], 0x5c
je 0x4059e0
dec eax
test eax, eax
jg 0x4059d4
mov ecx, edx
sub ecx, eax
test ecx, ecx
jle 0x405a0a
mov esi, dword [esp + 0x10]
mov ebp, ecx
add esi, eax
lea edi, [esp + ebx + 0x3ec]
shr ecx, 2
lea esi, [esp + esi + 0x23ed]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebx
sub ecx, eax
add ecx, edx
lea edx, [esp + ebx + 0x3ec]
push edx
push str.user::
mov byte [esp + ecx + 0x3f3], 0
mov ecx, 0xf558a0
call fcn.004f0087
mov ecx, eax
call fcn.004f0087
push 0x402150
push 0xa
mov ecx, eax
call fcn.004eff40
mov ecx, eax
call fcn.004016a0
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
inc eax
add esi, 0x100
add ebx, 0x40
cmp eax, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], esi
jl 0x405911
xor ebx, ebx
mov eax, edx
lea edi, [esp + 0x268]
shl eax, 8
or ecx, 0xffffffff
lea ebp, [esp + eax + 0x23ec]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebp
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.All_Users
or ecx, 0xffffffff
shl edx, 6
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + edx + 0x3f0]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0xf558a0
call fcn.004f0087
push 0x402150
push 0xa
mov ecx, eax
call fcn.004eff40
mov ecx, eax
call fcn.004016a0
inc dword [esp + 0x14]
call fcn.00404bf0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x64]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00404e40
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xe4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, 0x8dc238
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [0xc30bfc], ebx
or ecx, 0xffffffff
mov edi, 0xc30c0c
xor eax, eax
lea ebp, [edx - 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, ebp
lea ebp, [edx + 0x80]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0xc30c0c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0xc30c0c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebp
lea ebp, [edx + 0x4360]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0xc30c0c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebp
lea ebp, [edx + 0x21f0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
add edx, 0x6510
rep movsb byte es:[edi], byte [esi]
mov edi, 0xc30c0c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp edx, 0xc04a38
rep movsb byte es:[edi], byte [esi]
jl 0x405b51
mov esi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [esp + 0x64]
push ecx
call esi
test eax, eax
je 0x405c41
mov edx, dword [esp + 0x20]
push ebx
push edx
call fcn.00405e70
add esp, 8
lea eax, [esp + 0xe4]
push eax
call esi
test eax, eax
je 0x405c5d
push ebx
push str.All_Users
call fcn.00405e70
add esp, 8
mov eax, dword [esp + 0x14]
xor edi, edi
cmp eax, ebx
jle 0x405cc3
lea ebp, [esp + 0x3ec]
lea esi, [esp + 0x23ec]
lea ecx, [esp + 0x64]
push ecx
push esi
call fcn.004f61e0
add esp, 8
test eax, eax
je 0x405cb1
lea edx, [esp + 0xe4]
push edx
push esi
call fcn.004f61e0
add esp, 8
test eax, eax
je 0x405cb1
push esi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
test eax, eax
je 0x405cb1
push ebx
push ebp
call fcn.00405e70
add esp, 8
mov eax, dword [esp + 0x14]
inc edi
add esi, 0x100
add ebp, 0x40
cmp edi, eax
jl 0x405c75
mov eax, dword [0xc30bfc]
xor edi, edi
xor esi, esi
inc eax
test eax, eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], esi
jle 0x405e4b
mov ecx, dword [esp + 0xa3f0]
mov ebx, 0x8dc238
lea ebp, [ecx + 0xc0]
push 0x50e120
push ebx
call fcn.004f61e0
add esp, 8
test eax, eax
je 0x405ded
push 0x50e114
push ebx
call fcn.004f61e0
add esp, 8
test eax, eax
je 0x405ded
or ecx, 0xffffffff
lea edi, [ebx - 0x40]
xor eax, eax
lea edx, [ebp - 0xc0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [ebp - 0x80]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, ebx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
lea edi, [ebx + 0x80]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp + 0x2170]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebx + 0x21f0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [ebp + 0x42e0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebx + 0x4360]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
inc ecx
add ebp, 0x6510
mov dword [esp + 0x18], ecx
mov edi, ecx
jmp 0x405e19
push esi
push str.find.............
mov ecx, 0xf558a0
call fcn.004f0087
mov ecx, eax
call fcn.004f0458
push 0x402150
push 0xa
mov ecx, eax
call fcn.004eff40
mov ecx, eax
call fcn.004016a0
mov ecx, dword [0xc30bfc]
inc esi
add ebx, 0x6510
inc ecx
cmp esi, ecx
mov dword [esp + 0x10], esi
jl 0x405cef
mov edx, dword [esp + 0xa3f4]
mov ax, 1
mov dword [edx], edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa3dc
ret
mov eax, dword [esp + 0xa3f4]
mov dword [eax], edi
pop edi
pop esi
pop ebp
mov ax, 1
pop ebx
add esp, 0xa3dc
ret