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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x27c
push ebx
push dword [ebp + 0xc]
call fcn.100010b5
xor ebx, ebx
cmp dword [0x100042b0], ebx
mov edx, eax
mov dword [ebp + 0xc], edx
jne 0x10001711
cmp edx, ebx
jl 0x10001711
mov eax, dword [0x1000831c]
mov ecx, edx
imul ecx, ecx, 0x54
mov ecx, dword [ecx + eax + 0x20]
cmp ecx, 6
je 0x10001529
jle 0x10001711
cmp ecx, 8
jle 0x1000152d
cmp ecx, 9
jle 0x10001711
cmp ecx, 0xb
jle 0x1000152d
add ecx, 0xfffffff1
cmp ecx, 1
ja 0x10001711
cmp dword [ebp + 0x14], 1
je 0x10001536
jmp 0x10001711
dec edx
mov dword [ebp + 0xc], edx
cmp dword [ebp + 0x14], ebx
jne 0x10001711
push esi
mov esi, edx
imul esi, esi, 0x54
add esi, eax
mov eax, dword [esi + 0x20]
cmp eax, 7
push edi
jl 0x100016ec
cmp eax, 8
jle 0x100016d2
cmp eax, 0xd
je 0x10001618
cmp eax, 0xe
jne 0x100016ec
mov eax, dword [0x100082dc]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x27c]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 8]
cmp eax, ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x14], 0x45
mov dword [ebp - 0x10], 0x10001109
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], ebx
je 0x100015d6
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHGetDesktopFolder]
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 4]
push edx
lea edx, [ebp - 0x28]
push edx
push dword [esi + 8]
push ebx
push dword [0x100082dc]
push eax
call dword [ecx + 0xc]
mov eax, dword [ebp - 4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea eax, [ebp - 0x24]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderW]
mov edi, eax
cmp edi, ebx
je 0x100016ec
lea eax, [ebp - 0x27c]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
je 0x1000160c
lea eax, [ebp - 0x27c]
push eax
push dword [esi + 0x38]
call dword [sym.imp.USER32.dll_SetWindowTextW]
push edi
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x100016ec
push 0x48
lea eax, [ebp - 0x70]
push ebx
push eax
call fcn.10002b77
mov eax, dword [0x100082dc]
mov ecx, dword [esi + 0x34]
mov dword [ebp - 0x70], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x27c]
add esp, 0xc
mov dword [ebp - 0x58], eax
mov eax, 0x104
push eax
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x27c]
push eax
push dword [esi + 0x38]
and ecx, 0x83806
mov dword [ebp - 0x74], 0x4c
mov dword [ebp - 0x40], ecx
call dword [sym.imp.USER32.dll_GetWindowTextW]
mov edi, 0x100042b8
push edi
push 0x2000
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test dword [esi + 0x34], 0x40000
lea eax, [ebp - 0x74]
push eax
je 0x10001690
call dword [sym.imp.comdlg32.dll_GetSaveFileNameW]
jmp 0x10001696
call dword [sym.imp.comdlg32.dll_GetOpenFileNameW]
cmp eax, ebx
jne 0x100016b9
cmp word [ebp - 0x27c], bx
je 0x100016ec
call dword [sym.imp.comdlg32.dll_CommDlgExtendedError]
cmp eax, 0x3002
jne 0x100016ec
mov word [ebp - 0x27c], bx
jmp 0x1000166f
lea eax, [ebp - 0x27c]
push eax
push dword [esi + 0x38]
call dword [sym.imp.USER32.dll_SetWindowTextW]
push edi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
jmp 0x100016ec
mov eax, dword [esi + 4]
cmp word [eax], bx
je 0x100016ec
push 0xa
push ebx
push ebx
push eax
push ebx
push dword [0x100082e0]
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
test byte [esi + 0x34], 1
pop edi
pop esi
je 0x10001711
mov eax, dword [ebp + 0xc]
push ebx
push 1
push 0x408
push dword [0x100082e0]
inc eax
mov dword [0x100042b4], eax
call dword [sym.imp.USER32.dll_SendMessageW]
xor eax, eax
pop ebx
leave
ret 0x10