Function at 0x4067e0
Capabilities:
Create shortcut via ishelllink
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2ec
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x2e8], eax
push ebx
push esi
push edi
push 6
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
sub esp, 8
push dword [ebp + 8]
call fcn.0041a980
test eax, eax
js 0x4070e6
mov eax, dword fs:[0x18]
lea ecx, [esp + 0xb8]
push 0x10
mov edx, 2
mov dword [esp + 0xbc], 1
mov dword [esp + 0xcc], 0x1e
mov eax, dword [eax + 0x20]
mov dword [esp + 0xd0], str.PeViewerMutant_
mov dword [esp + 0xd4], 8
mov dword [esp + 0xe4], eax
call fcn.00424530
mov esi, eax
movzx eax, word [esi]
mov word [esp + 0xb0], ax
movzx eax, word [esi]
add ax, 2
mov word [esp + 0xb2], ax
mov eax, dword [esi + 4]
mov dword [esp + 0xb4], eax
mov dword [esp + 0x98], 0x18
call fcn.0041a330
mov dword [esp + 0x9c], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0xa0], eax
lea eax, [esp + 0x98]
push 1
push eax
push 1
lea eax, [esp + 0xa0]
mov dword [esp + 0xb0], 0x40
push eax
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0
call dword [sym.imp.ntdll.dll_NtCreateMutant]
or ebx, 0xffffffff
lea ecx, [esi - 8]
mov eax, ebx
lock xadd dword [ecx + 4], eax
dec eax
jne 0x406904
call fcn.00412410
call fcn.00414310
push 0x100
push 0x415430
mov edx, 0x415410
mov ecx, 0x1c
call fcn.00413e70
mov edx, dword [0x458d30]
mov ecx, 0xc
mov dword [0x458d2c], eax
call fcn.00412330
push 0x10
mov esi, eax
push 4
push dword [0x458d0c]
mov dword [esi], 0
mov dword [esi + 4], 4
call dword [sym.imp.ntdll.dll_RtlAllocateHeap]
push 0x457940
mov edx, 0x4579b0
mov dword [esi + 8], eax
mov ecx, 1
mov dword [0x458d28], esi
call fcn.004164b0
push 0x457930
mov edx, 0x4579c0
xor ecx, ecx
call fcn.004164b0
push 0x4578d8
mov edx, 0x457900
mov ecx, 1
call fcn.004164b0
push 0x457998
mov edx, 0x4578f8
mov ecx, 1
call fcn.004164b0
push 0x4579c8
mov edx, 0x4578e8
xor ecx, ecx
call fcn.004164b0
push 0x457918
mov edx, 0x457960
mov ecx, 2
call fcn.004164b0
push 0x4579b8
mov edx, 0x4578c8
mov ecx, 3
call fcn.004164b0
push 0x457910
mov edx, 0x457950
xor ecx, ecx
call fcn.004164b0
push 0x457980
mov edx, 0x457988
xor ecx, ecx
call fcn.004164b0
push 0x457958
mov edx, 0x4578d0
xor ecx, ecx
call fcn.004164b0
push 0x457968
mov edx, 0x457920
xor ecx, ecx
call fcn.004164b0
push 0x457970
mov edx, 0x457928
xor ecx, ecx
call fcn.004164b0
push 0x457938
mov edx, 0x4578e0
xor ecx, ecx
call fcn.004164b0
push 0x457978
mov edx, 0x457990
xor ecx, ecx
call fcn.004164b0
push 0x4579a8
mov edx, 0x457948
xor ecx, ecx
call fcn.004164b0
push 0x4579a0
mov edx, 0x4578f0
xor ecx, ecx
call fcn.004164b0
call fcn.00410930
mov edx, dword [0x4588f0]
mov ecx, 0x28
call fcn.00412330
mov edx, eax
xor eax, eax
mov word [edx], ax
mov eax, 1
lock xadd dword [0x4588f4], eax
inc eax
dec al
mov dword [edx + 4], 0
mov byte [edx + 2], al
mov ecx, 0x28
movzx eax, al
mov dword [edx + 8], 0x40ea20
mov dword [edx + 0xc], str.PvPropContext
mov dword [0x459160], edx
mov dword [eax*4 + 0x458d40], edx
mov edx, dword [0x4588f0]
call fcn.00412330
mov ecx, eax
xor eax, eax
mov word [ecx], ax
mov eax, 1
lock xadd dword [0x4588f4], eax
inc eax
dec al
mov dword [ecx + 4], 0
mov byte [ecx + 2], al
movzx eax, al
push 0x2c
push 0
mov dword [ecx + 8], 0x40ef40
mov dword [eax*4 + 0x458d40], ecx
lea eax, [esp + 0x68]
push eax
mov dword [ecx + 0xc], str.PvPropPageContext
mov dword [0x459164], ecx
mov dword [esp + 0x68], 0x30
call fcn.0042e280
mov eax, dword [0x458d10]
add esp, 0xc
mov dword [esp + 0x60], 0x4008
mov dword [esp + 0x64], 0x41cbd0
mov dword [esp + 0x68], 0
push 0x7f00
push 0
mov dword [esp + 0x74], 4
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], 0
call dword [sym.imp.USER32.dll_LoadCursorW]
mov dword [esp + 0x78], eax
lea eax, [esp + 0x5c]
push eax
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0x452780
mov dword [esp + 0x8c], 0
call dword [sym.imp.USER32.dll_RegisterClassExW]
test ax, ax
je 0x406c05
lea eax, [esp + 0x10]
mov dword [esp + 0x24], 0x1a0018
push eax
lea eax, [esp + 0x28]
mov dword [esp + 0x2c], str.comctl32.dll
push eax
push 0
push 0
call dword [sym.imp.ntdll.dll_LdrGetDllHandle]
xor ecx, ecx
test eax, eax
push 0x31
cmovns ecx, dword [esp + 0x14]
mov dword [0x4589e4], ecx
call dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x32
mov dword [0x458af8], eax
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [0x458afc], eax
cmp dword [0x458d14], 0x3f
jb 0x406c95
lea eax, [esp + 0x18]
push eax
call fcn.0041bbe0
mov edi, eax
mov dword [esp + 0x94], edi
test edi, edi
js 0x406c95
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
test cx, cx
jne 0x406c3e
call fcn.00412ea0
mov esi, eax
jmp 0x406c81
mov eax, dword [eax + 4]
mov edi, ecx
mov edx, dword [0x458d34]
mov dword [esp + 0x10], eax
lea ecx, [edi + 0xa]
call fcn.00412330
mov esi, eax
xor ecx, ecx
lea eax, [esi + 8]
mov dword [esi + 4], eax
mov dword [esi], edi
mov word [eax + edi], cx
mov eax, dword [esp + 0x10]
test eax, eax
je 0x406c7a
push edi
push eax
push dword [esi + 4]
call fcn.0042ea70
add esp, 0xc
mov edi, dword [esp + 0x94]
push dword [esp + 0x18]
push 0
push dword [0x458d0c]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
jmp 0x406ca5
lea eax, [esp + 0x20]
push eax
call fcn.0041bc70
mov esi, dword [esp + 0x20]
mov edi, eax
test edi, edi
js 0x4070e6
sub esp, 0x10
mov ecx, esi
call fcn.0041a0b0
lea ecx, [esi - 8]
mov eax, ebx
lock xadd dword [ecx + 4], eax
dec eax
jne 0x406cc9
call fcn.00412410
mov edi, dword [0x4588a8]
test edi, edi
jne 0x406e0e
push 6
push edi
call dword [sym.imp.ole32.dll_CoInitializeEx]
lea eax, [esp + 0x14]
push eax
push 0x4487d0
push 1
push edi
push 0x4487e0
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x406d2d
mov esi, dword [esp + 0x14]
push 8
push 4
push dword [0x458d0c]
call dword [sym.imp.ntdll.dll_RtlAllocateHeap]
mov edi, eax
mov byte [edi + 1], 0
test esi, esi
je 0x406d22
mov byte [edi], 1
mov dword [edi + 4], esi
jmp 0x406d2f
push 0xc000000d
call dword [sym.imp.ntdll.dll_RtlRaiseStatus]
xor edi, edi
push ecx
mov ecx, edi
call fcn.00419b00
cmp byte [edi], 0
mov ecx, dword [edi + 4]
je 0x406d70
mov eax, dword [ecx]
push 0x44ee38
push ecx
mov esi, dword [eax + 0x58]
mov ecx, esi
call dword [0x4484cc]
call esi
mov eax, dword [edi + 4]
push 0
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0xc]
mov ecx, esi
call dword [0x4484cc]
call esi
test eax, eax
setns al
jmp 0x406d8c
mov dword [ecx + 4], 0
cmp byte [edi + 1], 0
push ecx
jne 0x406d86
call dword [sym.imp.COMDLG32.dll_GetOpenFileNameW]
jmp 0x406d8c
call dword [sym.imp.COMDLG32.dll_GetSaveFileNameW]
test al, al
je 0x406d9c
mov ecx, edi
call fcn.00419cf0
mov dword [0x4588a8], eax
cmp byte [edi], 0
mov esi, dword [edi + 4]
je 0x406db6
mov eax, dword [esi]
push esi
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x4484cc]
call esi
jmp 0x406df1
mov eax, dword [esi + 0xc]
test eax, eax
je 0x406dcc
push eax
push 0
push dword [0x458d0c]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x406de2
push eax
push 0
push dword [0x458d0c]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
push esi
push 0
push dword [0x458d0c]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
push edi
push 0
push dword [0x458d0c]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
mov edi, dword [0x4588a8]
test edi, edi
je 0x4070e6
mov ecx, dword [edi]
mov dword [esp + 0x2c], 8
mov dword [esp + 0x30], str..lnk
cmp ecx, 8
jb 0x406fc0
mov eax, dword [edi + 4]
lea edx, [esp + 0x2c]
add ecx, 0xfffffff8
mov dword [esp + 0x34], 8
add eax, ecx
lea ecx, [esp + 0x34]
push 1
mov dword [esp + 0x3c], eax
call fcn.00412a30
test al, al
je 0x406fba
mov eax, dword [0x4588a8]
xor edi, edi
mov dword [esp + 0x14], eax
lea eax, [esp + 0x8c]
push eax
push 0x457804
push 1
push edi
push 0x457814
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x406fba
mov eax, dword [esp + 0x8c]
lea ecx, [esp + 0x90]
push ecx
push 0x457824
push eax
mov esi, dword [eax]
mov esi, dword [esi]
mov ecx, esi
call dword [0x4484cc]
call esi
test eax, eax
js 0x406f80
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x14]
push edi
mov esi, dword [eax]
push dword [ecx + 4]
push eax
mov esi, dword [esi + 0x14]
mov ecx, esi
call dword [0x4484cc]
call esi
test eax, eax
js 0x406f69
mov eax, dword [esp + 0x8c]
push 1
push edi
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x4c]
mov ecx, esi
call dword [0x4484cc]
call esi
test eax, eax
js 0x406f69
mov eax, dword [esp + 0x8c]
lea ecx, [esp + 0xe8]
push edi
push edi
push 0x104
mov esi, dword [eax]
push ecx
push eax
mov esi, dword [esi + 0xc]
mov ecx, esi
call dword [0x4484cc]
call esi
test eax, eax
js 0x406f69
lea esi, [esp + 0xe8]
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x406f26
mov edx, dword [0x458d34]
sub esi, ecx
sar esi, 1
add esi, esi
lea ecx, [esi + 0xa]
call fcn.00412330
mov edi, eax
xor ecx, ecx
lea eax, [edi + 8]
push esi
mov dword [edi + 4], eax
mov dword [edi], esi
mov word [esi + eax], cx
lea eax, [esp + 0xec]
push eax
push dword [edi + 4]
call fcn.0042ea70
add esp, 0xc
mov eax, dword [esp + 0x90]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x4484cc]
call esi
mov eax, dword [esp + 0x8c]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x4484cc]
call esi
test edi, edi
je 0x406fba
mov eax, dword [0x4588a8]
mov dword [0x4588a8], edi
test eax, eax
je 0x406fc0
lea ecx, [eax - 8]
lock xadd dword [ecx + 4], ebx
dec ebx
jne 0x406fba
call fcn.00412410
mov edi, dword [0x4588a8]
mov ecx, dword [edi]
mov dword [esp + 0x3c], 8
mov dword [esp + 0x40], str..lib
cmp ecx, 8
jb 0x40700e
mov eax, dword [edi + 4]
lea edx, [esp + 0x3c]
add ecx, 0xfffffff8
mov dword [esp + 0x44], 8
add eax, ecx
lea ecx, [esp + 0x44]
push 1
mov dword [esp + 0x4c], eax
call fcn.00412a30
test al, al
je 0x407008
call fcn.00405ee0
jmp 0x407091
mov edi, dword [0x4588a8]
mov ecx, dword [edi]
mov dword [esp + 0x4c], 8
mov dword [esp + 0x50], str..pdb
cmp ecx, 8
jb 0x407059
mov eax, dword [edi + 4]
lea edx, [esp + 0x4c]
add ecx, 0xfffffff8
mov dword [esp + 0x54], 8
add eax, ecx
lea ecx, [esp + 0x54]
push 1
mov dword [esp + 0x5c], eax
call fcn.00412a30
test al, al
je 0x407053
call fcn.0040bf50
jmp 0x407091
mov edi, dword [0x4588a8]
push 0x459180
push ecx
mov ecx, dword [edi + 4]
call fcn.00410dc0
test eax, eax
js 0x407085
movzx eax, word [0x459180]
cmp eax, 0x457f
je 0x4070d1
cmp eax, 0x5a4d
je 0x4070bc
mov eax, 0xc00001a3
push ecx
push eax
mov edx, str.Unable_to_load_the_file.
call fcn.00419030
mov ecx, dword [0x45893c]
test ecx, ecx
je 0x4070a3
mov ecx, dword [ecx + 4]
call fcn.004161e0
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2e8]
xor ecx, esp
call fcn.0042d1c6
mov esp, ebp
pop ebp
ret 0x10
call fcn.0040c0b0
push dword [0x459184]
push 0xffffffffffffffff
call dword [sym.imp.ntdll.dll_NtUnmapViewOfSection]
jmp 0x407091
call fcn.004033a0
push dword [0x459184]
push 0xffffffffffffffff
call dword [sym.imp.ntdll.dll_NtUnmapViewOfSection]
jmp 0x407091
mov ecx, dword [esp + 0x2f4]
mov eax, 1
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0042d1c6
mov esp, ebp
pop ebp
ret 0x10