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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x310
push ebx
push esi
push edi
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov esi, dword [sym.imp.USER32.dll_LoadCursorA]
push 0x7f02
push 0
call esi
push 0x7f00
push 0
mov dword [0x40a52c], eax
call esi
mov esi, dword [ebp + 8]
mov dword [0x409e60], eax
lea eax, [ebp - 0x310]
push 0x200
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x403bfd
lea eax, [ebp - 0x310]
push eax
call fcn.00401081
test eax, eax
je 0x403bf0
and byte [eax], 0
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push _lclose
mov dword [0x409b60], esi
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov dword [ebp - 4], eax
lea eax, [ebp - 0x110]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
jbe 0x403cb7
cmp eax, 0xf8
jae 0x403cb7
lea eax, [ebp - 0x110]
push eax
call fcn.0040113a
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
pop ecx
mov ebx, str.Shell32.dll
lea eax, [ebp - 0x110]
push ebx
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea eax, [ebp - 0x110]
push eax
call edi
cmp eax, 0x20
mov dword [0x409d9c], eax
ja 0x403cbc
lea eax, [ebp - 0x110]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jbe 0x403cb7
cmp eax, 0xf8
jae 0x403cb7
lea eax, [ebp - 0x110]
push eax
call fcn.0040113a
pop ecx
lea eax, [ebp - 0x110]
push ebx
push eax
call esi
lea eax, [ebp - 0x110]
push eax
call edi
mov dword [0x409d9c], eax
jmp 0x403cbc
mov eax, dword [0x409d9c]
test eax, eax
je 0x403cf7
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.SHBrowseForFolder
push eax
call esi
push str.SHGetMalloc
mov dword [0x409da0], eax
push dword [0x409d9c]
call esi
push str.SHGetPathFromIDList
mov dword [0x409da4], eax
push dword [0x409d9c]
call esi
mov dword [0x409da8], eax
mov esi, dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push 0x41
push 0x40
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GlobalLock]
push eax
call edi
mov ebx, 0x101
mov dword [0x409d90], eax
push ebx
push 0x40
call esi
push eax
call edi
push ebx
push 0x40
pop ebx
mov dword [0x409d84], eax
push ebx
call esi
push eax
call edi
push 0x200
push ebx
mov dword [0x409d88], eax
call esi
push eax
call edi
push 0x204
push ebx
mov dword [0x409d94], eax
call esi
push eax
call edi
push 0x1f4
push ebx
mov dword [0x409d8c], eax
call esi
push eax
call edi
mov ebx, 0x40a540
push 0x105
push ebx
mov dword [0x409d78], eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push ebx
call fcn.00401d87
pop ecx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0
push 0x40a4e0
call fcn.00405e88
pop ecx
test eax, eax
pop ecx
jne 0x404038
call fcn.004039b1
call fcn.00401dc8
test eax, eax
jne 0x403db4
mov ecx, dword [0x4090cc]
jmp 0x403e3e
mov ebx, dword [ebp + 0x10]
jmp 0x403dce
push 5
push str._info
push ebx
call fcn.00401187
add esp, 0xc
test eax, eax
je 0x403e18
inc ebx
cmp byte [ebx], 0
jne 0x403db9
xor ebx, ebx
xor eax, eax
inc ebx
cmp dword [ebp - 4], 0x80000000
mov dword [0x409d98], eax
jae 0x403df2
cmp byte [ebp - 4], 4
jb 0x403df2
mov dword [0x409d98], ebx
cmp dword [0x409d98], eax
jne 0x403e29
cmp byte [ebp - 4], 4
jae 0x403e29
mov ecx, dword [0x409d80]
mov edx, dword [0x409058]
push eax
add edx, ecx
push str.WinZip_Self_Extractor
push edx
push eax
jmp 0x403e53
push 0
push str.WinZip_Self_Extractor
push dword [0x409d94]
push 0
jmp 0x403e53
cmp word [0x4099e2], ax
mov dword [0x409d98], ebx
jne 0x403e5e
mov ecx, dword [0x409030]
mov eax, dword [0x409d80]
push 0x10
add ecx, eax
push str.WinZip_Self_Extractor
push ecx
push dword [0x409e50]
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x404038
mov eax, dword [0x4099d4]
push dword [ebp + 8]
mov ecx, eax
and cl, 2
sub cl, 2
neg cl
sbb ecx, ecx
inc ecx
mov dword [0x409978], ecx
mov ecx, 0x100
and eax, ecx
sub eax, ecx
neg eax
sbb eax, eax
inc eax
mov dword [0x409d54], eax
call fcn.00404969
mov ecx, dword [0x409bcc]
test ecx, ecx
je 0x403f0a
mov edx, dword [0x4099d4]
mov ebx, edx
mov eax, edx
and ebx, 0x100000
and eax, 0x80000
neg ebx
sbb ebx, ebx
and ebx, 0xfffffffd
add ebx, 4
neg eax
sbb eax, eax
and eax, ebx
test dl, 0x10
je 0x403ed7
mov edx, dword [0x409d90]
cmp byte [edx], 0
je 0x403ed7
or ah, 0x20
push eax
push edx
jmp 0x403ee0
or ah, 0x20
push eax
push str.WinZip_Self_Extractor
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 7
je 0x404038
cmp eax, 2
je 0x404038
push dword [0x409bcc]
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor ebx, ebx
inc ebx
test byte [0x4099d5], 2
push dword [ebp + 0x10]
je 0x403f1c
mov dword [0x409d74], ebx
call fcn.00401c50
pop ecx
push 0x400
push 0x42
call esi
mov esi, eax
push esi
call edi
mov edi, dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov ebx, dword [sym.imp.KERNEL32.dll_GlobalFree]
test esi, esi
mov dword [ebp - 8], eax
je 0x403f7f
test eax, eax
je 0x403f7f
mov ecx, dword [0x409d80]
mov edx, dword [0x409104]
add edx, ecx
push 0x400
push edx
push eax
call fcn.00401165
add esp, 0xc
push 0
push 0x402ebb
push 0
push dword [ebp - 8]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DialogBoxIndirectParamA]
push esi
call edi
push esi
call ebx
call fcn.00401bf7
push dword [0x409d90]
mov esi, dword [sym.imp.KERNEL32.dll_GlobalHandle]
call esi
push eax
call edi
push dword [0x409d90]
call esi
push eax
call ebx
push dword [0x409d84]
call esi
push eax
call edi
push dword [0x409d84]
call esi
push eax
call ebx
push dword [0x409d88]
call esi
push eax
call edi
push dword [0x409d88]
call esi
push eax
call ebx
push dword [0x409d94]
call esi
push eax
call edi
push dword [0x409d94]
call esi
push eax
call ebx
push dword [0x409d8c]
call esi
push eax
call edi
push dword [0x409d8c]
call esi
push eax
call ebx
push dword [0x409d78]
call esi
push eax
call edi
push dword [0x409d78]
call esi
push eax
call ebx
mov eax, dword [0x409d80]
test eax, eax
je 0x404028
push eax
call esi
push eax
call edi
push dword [0x409d80]
call esi
push eax
call ebx
mov eax, dword [0x409d9c]
test eax, eax
je 0x404038
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret 0x10