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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5cc23d
push eax
mov eax, dword [esp + 0x20]
mov dword fs:[0], esp
sub esp, 0x524
push ebp
xor ebp, ebp
test eax, eax
push edi
je 0x43c53f
push eax
call fcn.005939c0
mov ebp, eax
mov eax, dword [0x63f87c]
or ecx, 0xffffffff
push ebx
push esi
mov edi, dword [eax*4 + 0x621270]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x18]
mov eax, ecx
mov esi, edi
mov edi, edx
mov ebx, dword [esp + 0x548]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0043c960
add esp, 4
test eax, eax
je 0x43c58f
lea ecx, [esp + 0x18]
push ecx
call fcn.0058c546
add esp, 4
lea edi, [esp + 0x18]
or ecx, 0xffffffff
xor eax, eax
push 0x2f
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.004f6420
add esp, 8
test eax, eax
je 0x43c5d9
push 0x2f
push ebx
mov byte [eax], 0x5c
call fcn.004f6420
add esp, 8
test eax, eax
jne 0x43c5c7
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 2
jbe 0x43c62c
lea eax, [ebx + 2]
push 0x61f34c
push eax
call fcn.004f6130
mov esi, eax
add esp, 8
test esi, esi
je 0x43c62c
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esi + 1]
push ecx
push esi
call fcn.004f5580
push 0x61f34c
push esi
call fcn.004f6130
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x43c601
push 0x5c
push ebx
call fcn.004f6420
add esp, 8
test eax, eax
jne 0x43c65d
push 0x2f
push ebx
call fcn.004f6420
add esp, 8
test eax, eax
jne 0x43c65d
push 0x3a
push ebx
call fcn.004f6420
add esp, 8
test eax, eax
je 0x43c76f
lea edx, [esp + 0x434]
lea eax, [esp + 0x22c]
push edx
lea ecx, [esp + 0x130]
push eax
lea edx, [esp + 0x1c]
push ecx
push edx
push ebx
call fcn.004f64dc
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x24]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x24]
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, [esp + 0x12c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x32c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0x104
call esi
mov edi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [esp + 0x24]
push ecx
call edi
test eax, eax
je 0x43c723
lea edx, [esp + 0x24]
push edx
push 0x104
call esi
lea eax, [esp + 0x24]
push eax
call fcn.00436520
add esp, 4
lea ecx, [esp + 0x32c]
push ecx
call edi
jmp 0x43c76f
mov edi, 0x61e1fc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x22c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x518
call fcn.00596900
add esp, 4
mov dword [esp + 0x10], eax
xor esi, esi
cmp eax, esi
mov dword [esp + 0x53c], esi
je 0x43c7b8
mov ecx, dword [esp + 0x558]
mov edx, dword [esp + 0x550]
push ecx
mov ecx, dword [esp + 0x548]
push ebp
or edx, 0x804
push esi
push edx
push ebx
push esi
push ecx
mov ecx, eax
call fcn.0043de00
mov esi, eax
test ebp, ebp
mov dword [esp + 0x53c], 0xffffffff
mov dword [esi + 0x78], ebx
je 0x43c7d0
mov edx, dword [ebp + 0x1c]
push edx
jmp 0x43c7e8
call fcn.0059890a
test eax, eax
je 0x43c7e2
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x74]
jmp 0x43c7e4
xor eax, eax
mov eax, dword [eax + 0x1c]
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xb8]
mov ebp, dword [esi + 0x20c]
mov ebx, eax
mov eax, dword [esi + 0x74]
xor edi, edi
mov di, word [esi + 0x96]
cmp ebx, 1
mov dword [esp + 0x10], eax
jne 0x43c825
push str.SaveOpts
lea ecx, [esi + 0x1f8]
call fcn.0043db70
test esi, esi
je 0x43c832
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx + 4]
pop esi
cmp ebx, 1
pop ebx
jne 0x43c92b
mov eax, dword [esp + 0x544]
test eax, eax
je 0x43c84a
mov dword [eax], edi
test ebp, ebp
je 0x43c910
mov eax, dword [0x63f9c8]
test eax, eax
je 0x43c8d1
call fcn.0059890a
test eax, eax
je 0x43c86d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x74]
jmp 0x43c86f
xor eax, eax
push 7
mov ecx, eax
call fcn.00596c9a
call fcn.0059890a
test eax, eax
je 0x43c8ac
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x74]
push 0
mov ecx, eax
call fcn.00596c9a
mov eax, dword [esp + 8]
pop edi
pop ebp
mov ecx, dword [esp + 0x524]
mov dword fs:[0], ecx
add esp, 0x530
ret
xor eax, eax
push eax
mov ecx, eax
call fcn.00596c9a
mov eax, dword [esp + 8]
pop edi
pop ebp
mov ecx, dword [esp + 0x524]
mov dword fs:[0], ecx
add esp, 0x530
ret
call fcn.0059890a
test eax, eax
je 0x43c905
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x74]
push 6
mov ecx, eax
call fcn.00596c9a
mov eax, dword [esp + 8]
pop edi
pop ebp
mov ecx, dword [esp + 0x524]
mov dword fs:[0], ecx
add esp, 0x530
ret
xor eax, eax
push 6
mov ecx, eax
call fcn.00596c9a
mov eax, dword [esp + 8]
pop edi
pop ebp
mov ecx, dword [esp + 0x524]
mov dword fs:[0], ecx
add esp, 0x530
ret
call sub.comdlg32.dll_CommDlgExtendedError
push eax
push eax
push str.Error__d___x
call fcn.00436520
mov ecx, dword [esp + 0x538]
add esp, 0xc
xor eax, eax
mov dword fs:[0], ecx
pop edi
pop ebp
add esp, 0x530
ret