Function at 0x402afa
Capabilities:
Create process on windows
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x660
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
lea edx, [ecx - 1]
cmp edx, 6
ja case.default.0x402761
jmp dword [edx*4 + 0x40d260]
push 0
call dword [sym.imp.ole32.dll_OleInitialize]
call dbg.PaneRegisterClassW
call dbg.TypeLibRegisterClassW
push dword [0x419060]
push 0x419048
push esi
call dbg.CreatePanedWindow
add esp, 0xc
test eax, eax
jne 0x40279a
push 0
call dword [sym.imp.user32.dll_PostQuitMessage]
mov esi, dword [0x419048]
push dword [0x419060]
call dbg.CreateTreeWindow
add esp, 4
push eax
push esi
call dbg.SetLeft
add esp, 8
mov esi, dword [0x419048]
push dword [0x419060]
call dbg.CreateDetailsWindow
add esp, 4
push eax
push esi
call dbg.SetRight
add esp, 8
push dword [0x419054]
call dword [sym.imp.user32.dll_SetFocus]
jmp case.0x40288e.105
cmp ecx, 0x111
je 0x402883
cmp ecx, 0x11f
jne case.0x402761.3
movzx eax, ax
lea esi, [ebp - 0x26c]
push 0x100
push esi
push eax
push dword [0x419060]
call dword [sym.imp.user32.dll_LoadStringW]
test eax, eax
jne 0x40282f
push 0x100
push esi
push 0xa
push dword [0x419060]
call dword [sym.imp.user32.dll_LoadStringW]
push esi
push 0
push 0x40b
push dword [0x41904c]
call dword [sym.imp.user32.dll_SendMessageW]
jmp case.0x40288e.105
add esp, 0x660
pop esi
pop edi
pop ebx
pop ebp
jmp dword [sym.imp.user32.dll_DefWindowProcW]
cmp eax, 1
je case.0x40288e.105
call dbg.ResizeChild
jmp case.0x40288e.105
call dbg.EmptyTree
call dword [sym.imp.ole32.dll_OleUninitialize]
push 0
call dword [sym.imp.user32.dll_PostQuitMessage]
xor eax, eax
add esp, 0x660
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
movzx eax, ax
add eax, 0xffffff9b
cmp eax, 0x20
ja case.0x40288e.105
jmp dword [eax*4 + 0x40d27c]
mov edi, dword [sym.imp.user32.dll_LoadStringW]
push 0x100
push 0x41926c
push 0x1e
push dword [0x419060]
call edi
lea eax, [ebp - 0x46c]
push 0x100
push eax
push 0x1f
push dword [0x419060]
call edi
lea ebx, [ebp - 0x66c]
push 0x100
push ebx
push 0x20
push dword [0x419060]
call edi
lea edi, [ebp - 0x26c]
push 0
push 0
push ebx
push 0
push 0
lea eax, [ebp - 0x46c]
push eax
push str._s_c.tlb_.olb_.dll_.ocx_.exe_c_s_c._c
push edi
call dword [sym.imp.user32.dll_wsprintfW]
add esp, 0x20
xorps xmm0, xmm0
movups xmmword [ebp - 0x34], xmm0
movups xmmword [ebp - 0x54], xmm0
movups xmmword [ebp - 0x44], xmm0
movups xmmword [ebp - 0x24], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x14], xmm0
mov dword [ebp - 0x64], 0x58
mov dword [ebp - 0x60], esi
mov eax, dword [0x419060]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x34], 0x41926c
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x48], 0x41946c
mov dword [ebp - 0x44], 0x100
mov dword [ebp - 0x30], 0x800004
lea eax, [ebp - 0x64]
push eax
call dword [sym.imp.comdlg32.dll_GetOpenFileNameW]
test eax, eax
je case.0x40288e.105
push 0x41946c
jmp 0x402ef3
mov eax, dword [0x419068]
mov edi, eax
and edi, 0x10
xor eax, 0x10
mov dword [0x419068], eax
je 0x402ea7
push esi
call dword [sym.imp.user32.dll_GetMenu]
shr edi, 1
xor edi, 8
push edi
push 0x85
jmp 0x402e9b
xor eax, eax
cmp dword [0x419064], 0
sete al
mov dword [0x419064], eax
push esi
call dword [sym.imp.user32.dll_GetMenu]
xor ecx, ecx
cmp dword [0x419064], 0
setne cl
shl ecx, 3
push ecx
push pe_nt_image_headers32
push eax
call dword [sym.imp.user32.dll_CheckMenuItem]
call dbg.EmptyTree
cmp dword [0x419064], 0
je 0x402eb2
call dbg.AddTreeEx
jmp 0x402eb7
mov edi, dword [sym.imp.user32.dll_SendMessageW]
push 0
push 9
push 0x110a
push dword [0x419054]
call edi
mov esi, eax
push 0
jmp 0x402a8f
push dword [0x41904c]
call dword [sym.imp.user32.dll_IsWindowVisible]
xor ebx, ebx
test eax, eax
sete bl
lea eax, [ebx + ebx*4]
push eax
push dword [0x41904c]
call dword [sym.imp.user32.dll_ShowWindow]
push esi
call dword [sym.imp.user32.dll_GetMenu]
shl ebx, 3
push ebx
push 0x7b
jmp 0x402add
push 0
push dbg._SysConfProc@16
push esi
push 0x3f2
push 0
call dword [sym.imp.user32.dll_DialogBoxParamW]
jmp case.0x40288e.105
push 0
push dbg._CreateInstOnProc@16
push esi
push 0x3e8
push 0
call dword [sym.imp.user32.dll_DialogBoxParamW]
cmp eax, 2
je case.0x40288e.105
mov edi, dword [sym.imp.user32.dll_SendMessageW]
push 0
push 9
push 0x110a
push dword [0x419054]
call edi
mov esi, eax
push 0x41906c
push eax
call dbg.CreateInst
add esp, 8
push esi
push 2
push 0x1102
push dword [0x419054]
call edi
jmp case.0x40288e.105
push dword [0x419050]
call dword [sym.imp.user32.dll_IsWindowVisible]
xor ebx, ebx
test eax, eax
sete bl
lea eax, [ebx + ebx*4]
push eax
push dword [0x419050]
call dword [sym.imp.user32.dll_ShowWindow]
push esi
call dword [sym.imp.user32.dll_GetMenu]
shl ebx, 3
push ebx
push 0x7a
push eax
call dword [sym.imp.user32.dll_CheckMenuItem]
call dbg.ResizeChild
jmp case.0x40288e.105
push esi
call dword [sym.imp.user32.dll_DestroyWindow]
jmp case.0x40288e.105
lea esi, [ebp - 0x26c]
push 0xf7
push esi
call dword [sym.imp.kernel32.dll_GetWindowsDirectoryW]
cmp word [esi], 0
lea esi, [esi + 2]
jne 0x402b0c
movaps xmm0, xmmword [str._regedit.exe]
movups xmmword [esi - 2], xmm0
movsd xmm0, qword [0x40d250]
movsd qword [esi + 0xe], xmm0
mov word [esi + 0x16], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x438], xmm0
movups xmmword [ebp - 0x448], xmm0
movups xmmword [ebp - 0x458], xmm0
movups xmmword [ebp - 0x468], xmm0
mov dword [ebp - 0x46c], 0x44
sub esp, 0x28
lea eax, [ebp - 0x66c]
mov dword [esp + 0x24], eax
lea eax, [ebp - 0x46c]
mov dword [esp + 0x20], eax
movups xmmword [esp + 8], xmm0
lea eax, [ebp - 0x26c]
mov dword [esp + 4], eax
mov dword [esp], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
call dword [sym.imp.kernel32.dll_CreateProcessW]
test eax, eax
je case.0x40288e.105
mov esi, dword [sym.imp.kernel32.dll_CloseHandle]
push dword [ebp - 0x66c]
call esi
push dword [ebp - 0x668]
call esi
jmp case.0x40288e.105
push 0
push 9
push 0x110a
push dword [0x419054]
call dword [sym.imp.user32.dll_SendMessageW]
mov esi, eax
push eax
call dbg.ReleaseInst
add esp, 4
push esi
call dbg.RefreshMenu
add esp, 4
push esi
call dbg.RefreshDetails
add esp, 4
jmp case.0x40288e.105
mov esi, dword [sym.imp.user32.dll_SendMessageW]
push 0
push 9
push 0x110a
push dword [0x419054]
call esi
xorps xmm0, xmm0
movups xmmword [ebp - 0x26c], xmm0
movups xmmword [ebp - 0x25c], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x24c], xmm0
mov dword [ebp - 0x268], eax
mov dword [ebp - 0x258], 0x100
lea eax, [ebp - 0x26c]
push eax
push 0
push 0x113e
push dword [0x419054]
call esi
push dword [0x419044]
call dword [sym.imp.user32.dll_OpenClipboard]
test eax, eax
je case.0x40288e.105
call dword [sym.imp.user32.dll_EmptyClipboard]
test eax, eax
je case.0x40288e.105
cmp dword [ebp - 0x248], 0
je case.0x40288e.105
push 0x200
push 0x42
call dword [sym.imp.kernel32.dll_GlobalAlloc]
mov esi, eax
push eax
call dword [sym.imp.kernel32.dll_GlobalLock]
xor ecx, ecx
mov edx, dword [ebp - 0x248]
movzx edi, word [edx + ecx + 0x202]
mov word [eax + ecx], di
add ecx, 2
test di, di
jne 0x402c9b
jmp 0x402e31
lea edi, [ebp - 0x26c]
push 0x100
push edi
push 0x14
push dword [0x419060]
call dword [sym.imp.user32.dll_LoadStringW]
push 0
push 0
push edi
push esi
call dword [sym.imp.shell32.dll_ShellAboutW]
jmp case.0x40288e.105
mov eax, dword [0x419068]
mov edi, eax
and edi, 1
xor eax, 1
mov dword [0x419068], eax
je 0x402ea7
push esi
call dword [sym.imp.user32.dll_GetMenu]
shl edi, 3
xor edi, 8
push edi
push 0x82
jmp 0x402e9b
push 0
push 9
push 0x110a
push dword [0x419054]
call dword [sym.imp.user32.dll_SendMessageW]
mov esi, eax
push eax
call dbg.IsInterface
add esp, 4
test eax, eax
je 0x402ef1
push esi
call dbg.InterfaceViewer
add esp, 4
jmp case.0x40288e.105
mov esi, dword [sym.imp.user32.dll_SendMessageW]
push 0
push 9
push 0x110a
push dword [0x419054]
call esi
xorps xmm0, xmm0
movups xmmword [ebp - 0x26c], xmm0
movups xmmword [ebp - 0x25c], xmm0
xorps xmm0, xmm0
movsd qword [ebp - 0x24c], xmm0
mov dword [ebp - 0x268], eax
mov dword [ebp - 0x258], 0x100
lea eax, [ebp - 0x26c]
push eax
push 0
push 0x113e
push dword [0x419054]
call esi
push dword [0x419044]
call dword [sym.imp.user32.dll_OpenClipboard]
test eax, eax
je case.0x40288e.105
call dword [sym.imp.user32.dll_EmptyClipboard]
test eax, eax
je case.0x40288e.105
cmp dword [ebp - 0x248], 0
je case.0x40288e.105
push 0x200
push 0x42
call dword [sym.imp.kernel32.dll_GlobalAlloc]
mov esi, eax
push eax
call dword [sym.imp.kernel32.dll_GlobalLock]
mov edi, 0xfffffffe
mov ecx, dword [ebp - 0x248]
cmp word [ecx + edi + 0x204], 0
lea edi, [edi + 2]
jne 0x402dee
mov word [ecx + edi + 0x200], 0
mov ecx, 0x204
add ecx, dword [ebp - 0x248]
push ecx
push str._object_n___classid_clsid:_s__n__n__object_
push eax
call dword [sym.imp.user32.dll_wsprintfW]
add esp, 0xc
mov eax, dword [ebp - 0x248]
mov word [eax + edi + 0x200], 0x7d
push esi
call dword [sym.imp.kernel32.dll_GlobalUnlock]
push esi
push 0xd
call dword [sym.imp.user32.dll_SetClipboardData]
call dword [sym.imp.user32.dll_CloseClipboard]
jmp case.0x40288e.105
mov eax, dword [0x419068]
mov edi, eax
and edi, 4
xor eax, 4
mov dword [0x419068], eax
je 0x402ea7
push esi
call dword [sym.imp.user32.dll_GetMenu]
add edi, edi
xor edi, 8
push edi
push 0x84
jmp 0x402e9b
mov eax, dword [0x419068]
mov edi, eax
and edi, 2
xor eax, 2
mov dword [0x419068], eax
je 0x402ea7
push esi
call dword [sym.imp.user32.dll_GetMenu]
shl edi, 2
xor edi, 8
push edi
push 0x83
push eax
call dword [sym.imp.user32.dll_CheckMenuItem]
jmp case.0x40288e.105
mov dword [0x419068], edi
jmp case.0x40288e.105
call dbg.AddTree
mov edi, dword [sym.imp.user32.dll_SendMessageW]
push 0xffff0000
push 4
push 0x110a
push dword [0x419054]
call edi
mov esi, eax
push eax
push 0
push 0x110b
push dword [0x419054]
call edi
push esi
call dbg.RefreshMenu
add esp, 4
jmp case.0x40288e.105
push 0
push dword [0x419060]
call dbg.CreateTypeLibWindow
add esp, 8
jmp case.0x40288e.105