Function at 0x1000176b
Capabilities:
Create process on windows
Get common file path
Get graphical window text
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x178
push ebx
push dword [ebp + 0xc]
call fcn.1000103e
xor edx, edx
mov ebx, eax
cmp dword [0x10006680], edx
mov dword [ebp + 0xc], ebx
jne 0x100019e0
cmp ebx, edx
jl 0x100019e0
mov ecx, ebx
mov eax, dword [0x10006804]
imul ecx, ecx, 0x54
mov ecx, dword [ecx + eax + 0x20]
cmp ecx, 6
je 0x100017e1
jle 0x100019e0
cmp ecx, 8
jle 0x100017e5
cmp ecx, 9
jle 0x100019e0
cmp ecx, 0xb
jle 0x100017e5
cmp ecx, 0xe
jle 0x100019e0
cmp ecx, 0x10
jg 0x100019e0
cmp dword [ebp + 0x14], 1
je 0x100017ee
jmp 0x100019e0
dec ebx
mov dword [ebp + 0xc], ebx
cmp dword [ebp + 0x14], edx
jne 0x100019e0
push esi
mov esi, ebx
imul esi, esi, 0x54
add esi, eax
push edi
mov eax, dword [esi + 0x20]
cmp eax, 7
jl 0x100019bd
cmp eax, 8
jle 0x100019a3
cmp eax, 0xd
je 0x100018f3
cmp eax, 0xe
jne 0x100019bd
mov eax, dword [0x100067c4]
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x178]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 8]
cmp eax, edx
mov dword [ebp - 0x14], 0x45
mov dword [ebp - 0x10], 0x10001097
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edx
je 0x100018b2
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edi, [eax + eax + 2]
push edi
call fcn.10001000
mov ebx, eax
push edi
push ebx
push 0xffffffffffffffff
push dword [esi + 8]
xor edi, edi
push edi
push edi
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHGetDesktopFolder]
mov eax, dword [ebp + 0x14]
lea edx, [ebp - 4]
push edi
push edx
mov ecx, dword [eax]
lea edx, [ebp - 0x28]
push edx
push ebx
push edi
push dword [0x100067c4]
push eax
call dword [ecx + 0xc]
mov eax, dword [ebp - 4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
push ebx
call fcn.1000100f
mov ebx, dword [ebp + 0xc]
lea eax, [ebp - 0x24]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
mov edi, eax
test edi, edi
je 0x100019bd
lea eax, [ebp - 0x178]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
je 0x100018e7
lea eax, [ebp - 0x178]
push eax
push dword [esi + 0x38]
call fcn.10001087
push edi
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x100019bd
push 0x12
xor eax, eax
pop ecx
lea edi, [ebp - 0x70]
rep stosd dword es:[edi], eax
mov eax, dword [0x100067c4]
mov ecx, dword [esi + 0x34]
mov dword [ebp - 0x70], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x178]
mov dword [ebp - 0x58], eax
mov eax, 0x104
mov dword [ebp - 0x54], eax
push eax
lea eax, [ebp - 0x178]
and ecx, 0x83806
push eax
mov dword [ebp - 0x74], 0x4c
push dword [esi + 0x38]
mov dword [ebp - 0x40], ecx
call dword [sym.imp.USER32.dll_GetWindowTextA]
mov edi, 0x10004648
push edi
push 0x2000
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
test byte [esi + 0x36], 4
lea eax, [ebp - 0x74]
push eax
je 0x10001963
call dword [sym.imp.comdlg32.dll_GetSaveFileNameA]
jmp 0x10001969
call dword [sym.imp.comdlg32.dll_GetOpenFileNameA]
test eax, eax
jne 0x1000198b
cmp byte [ebp - 0x178], al
je 0x100019bd
call dword [sym.imp.comdlg32.dll_CommDlgExtendedError]
cmp eax, 0x3002
jne 0x100019bd
and byte [ebp - 0x178], 0
jmp 0x10001945
lea eax, [ebp - 0x178]
push eax
push dword [esi + 0x38]
call fcn.10001087
push edi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
jmp 0x100019bd
mov eax, dword [esi + 4]
cmp byte [eax], 0
je 0x100019bd
push 0xa
push edx
push edx
push eax
push edx
push dword [0x100067c8]
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
test byte [esi + 0x34], 1
pop edi
pop esi
je 0x100019e0
push 0
push 1
push 0x408
inc ebx
push dword [0x100067c8]
mov dword [0x100067bc], ebx
call sub.USER32.dll_SendMessageA
xor eax, eax
pop ebx
leave
ret 0x10