Function at 0x403218
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x244
push ebx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetACP]
push 1
cmp eax, 0x36a
pop edi
je 0x403259
cmp eax, 0x3a4
je 0x403259
cmp eax, 0x3a8
je 0x403259
cmp eax, 0x3b4
jbe 0x403250
cmp eax, 0x3b6
jbe 0x403259
and dword [0x407e28], 0
jmp 0x4032cc
xor esi, esi
push 0x3c
lea eax, [ebp - 0x44]
push esi
push eax
mov dword [0x407e28], edi
call fcn.00401056
and byte [ebp - 0x30], 0
and byte [ebp - 0x2f], 0
and byte [ebp - 0x2e], 0
and byte [ebp - 0x2c], 0
add esp, 0xc
lea eax, [ebp - 0x28]
mov dword [ebp - 0x44], 0xe
mov dword [ebp - 0x40], esi
push str.Helv
push eax
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], esi
mov byte [ebp - 0x2d], 0x80
mov byte [ebp - 0x2b], 0x12
mov byte [ebp - 0x2a], 2
mov byte [ebp - 0x29], 2
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x44]
mov dword [0x407e28], edi
push eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectA]
mov dword [0x407e2c], eax
mov dword [0x407e2c], eax
mov esi, dword [sym.imp.USER32.dll_LoadCursorA]
push 0x7f02
push 0
call esi
push 0x7f00
push 0
mov dword [0x4086c8], eax
call esi
mov esi, dword [ebp + 8]
mov dword [0x4083e0], eax
lea eax, [ebp - 0x244]
push 0x200
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x403334
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [ebp + eax - 0x245]
cmp byte [eax], 0x5c
je 0x403324
dec eax
jmp 0x40331c
and byte [eax], 0
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0x8001
mov dword [0x407c14], esi
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
call dword [sym.imp.KERNEL32.dll_GetVersion]
push str.Shell32.dll
mov dword [ebp - 4], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
mov dword [0x407e58], eax
je 0x403399
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.SHBrowseForFolder
push eax
call esi
push str.SHGetMalloc
mov dword [0x407e5c], eax
push dword [0x407e58]
call esi
push str.SHGetPathFromIDList
mov dword [0x407e60], eax
push dword [0x407e58]
call esi
mov dword [0x407e64], 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 [0x407e4c], eax
push ebx
push 0x40
call esi
push eax
call edi
push ebx
push 0x40
pop ebx
mov dword [0x407e40], eax
push ebx
call esi
push eax
call edi
push 0x200
push ebx
mov dword [0x407e44], eax
call esi
push eax
call edi
push 0x204
push ebx
mov dword [0x407e50], eax
call esi
push eax
call edi
push 0x1f4
push ebx
mov dword [0x407e48], eax
call esi
push eax
call edi
mov ebx, 0x408440
push 0x105
push ebx
mov dword [0x407e34], eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push ebx
call fcn.00403137
pop ecx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0
push 0x408680
call fcn.004056b8
pop ecx
test eax, eax
pop ecx
jne 0x4036a6
call fcn.00402dea
call fcn.00403178
test eax, eax
jne 0x403459
push 0x10
push str.WinZip_Self_Extractor
push 0x27
jmp 0x4034e4
mov ebx, dword [ebp + 0x10]
cmp byte [ebx], 0
je 0x403489
push 5
push str._info
push ebx
call fcn.00401028
add esp, 0xc
test eax, eax
je 0x403478
inc ebx
jmp 0x40345c
push 0
push str.WinZip_Self_Extractor
push dword [0x407e50]
push 0
jmp 0x4034f0
xor ebx, ebx
cmp dword [ebp - 4], 0x80000000
mov dword [0x407e54], ebx
jae 0x4034aa
cmp byte [ebp - 4], 4
jb 0x4034aa
mov dword [0x407e54], 1
cmp dword [0x407e54], ebx
jne 0x4034c9
cmp byte [ebp - 4], 4
jae 0x4034c9
push ebx
push str.WinZip_Self_Extractor
push 0xa
call fcn.0040108f
push eax
push ebx
jmp 0x4034f0
cmp word [0x407942], bx
mov dword [0x407e54], 1
jne 0x4034fb
push 0x10
push str.WinZip_Self_Extractor
push ebx
call fcn.0040108f
push eax
push dword [0x4086c0]
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x4036a6
mov eax, dword [0x407934]
push dword [ebp + 8]
mov ecx, eax
and ecx, 2
sub cl, 2
neg cl
sbb ecx, ecx
inc ecx
mov dword [0x4078d4], ecx
mov ecx, 0x100
and eax, ecx
sub eax, ecx
neg eax
sbb eax, eax
inc eax
mov dword [0x407e08], eax
call fcn.004040d6
mov ecx, dword [0x407ce4]
cmp ecx, ebx
je 0x4035a5
mov edx, dword [0x407934]
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 0x403574
mov edx, dword [0x407e4c]
cmp byte [edx], 0
je 0x403574
or ah, 0x20
push eax
push edx
jmp 0x40357d
or ah, 0x20
push eax
push str.WinZip_Self_Extractor
xor ebx, ebx
push ecx
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 7
je 0x4036a6
cmp eax, 2
je 0x4036a6
push dword [0x407ce4]
call dword [sym.imp.KERNEL32.dll_LocalFree]
test byte [0x407935], 2
je 0x4035b8
mov dword [0x407e30], 1
push dword [ebp + 0x10]
call fcn.0040302c
pop ecx
push 0x400
push 0x42
call esi
mov esi, eax
push esi
call edi
mov edi, dword [sym.imp.KERNEL32.dll_GlobalUnlock]
cmp esi, ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GlobalFree]
mov dword [ebp - 8], eax
je 0x403619
test eax, eax
je 0x403619
push 0x400
push 0x35
call fcn.0040108f
push eax
push dword [ebp - 8]
call fcn.00401000
add esp, 0xc
push 0
push 0x402511
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.00402fd3
push dword [0x407e4c]
mov esi, dword [sym.imp.KERNEL32.dll_GlobalHandle]
call esi
push eax
call edi
push dword [0x407e4c]
call esi
push eax
call ebx
push dword [0x407e50]
call esi
push eax
call edi
push dword [0x407e50]
call esi
push eax
call ebx
push dword [0x407e48]
call esi
push eax
call edi
push dword [0x407e48]
call esi
push eax
call ebx
push dword [0x407e34]
call esi
push eax
call edi
push dword [0x407e34]
call esi
push eax
call ebx
mov eax, dword [0x407e3c]
test eax, eax
je 0x403696
push eax
call esi
push eax
call edi
push dword [0x407e3c]
call esi
push eax
call ebx
mov eax, dword [0x407e58]
test eax, eax
je 0x4036a6
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret 0x10