Function at 0x410850
Capabilities:
Create thread
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4348dc
mov eax, dword fs:[0]
push eax
sub esp, 0x27c
mov eax, dword [0x449140]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
xor eax, eax
lea edx, [ecx + 2]
mov dword [ebp - 0x240], eax
mov edi, edi
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410890
sub ecx, edx
sar ecx, 1
lea eax, [esi + ecx*2]
push eax
push esi
lea ecx, [ebp - 0x24c]
call fcn.00406f20
lea edx, [ebp - 0x24c]
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x27c]
call fcn.0040bd90
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x24c]
test eax, eax
je 0x4108eb
lea ecx, [eax - 0xc]
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
jne 0x4108eb
push ecx
call fcn.00417cf7
add esp, 4
mov eax, dword [ebp - 0x278]
mov ecx, dword [ebp - 0x27c]
sub eax, ecx
cmp eax, 0xc
jne 0x411287
mov esi, dword [ecx + 4]
lea eax, [esi - 0xc]
lock inc dword [eax]
mov dword [ebp - 0x244], esi
mov eax, dword [ebp - 0x27c]
push 6
add eax, 8
mov byte [ebp - 4], 7
push 0
mov dword [ebp - 0x260], eax
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov edi, eax
test edi, edi
js 0x4112ea
lea eax, [ebp - 0x23c]
mov byte [ebp - 4], 0xb
push eax
push 0x442fb0
push 0x17
push 0
push 0x436300
mov dword [ebp - 0x23c], 0
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov edi, eax
test edi, edi
js 0x41132b
mov eax, dword [ebp - 0x23c]
lea edx, [ebp - 0x54]
mov dword [ebp - 0x54], 0x99e41357
mov dword [ebp - 0x50], 0x4abb3fd1
mov dword [ebp - 0x4c], 0xd895278f
mov dword [ebp - 0x48], 0x8f6ca25
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x60]
mov edi, eax
test edi, edi
js 0x41136c
mov eax, dword [ebp - 0x23c]
lea edx, [ebp - 0x264]
mov dword [ebp - 0x264], 0
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
mov edi, eax
test edi, edi
js 0x4113ad
mov eax, dword [ebp - 0x23c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x24]
mov ecx, dword [ebp - 0x264]
or ecx, 0x160
push ecx
push eax
call edx
mov edi, eax
test edi, edi
js 0x4113ee
mov eax, dword [esi - 8]
mov edx, esi
lea ecx, [esi + eax*2]
cmp esi, ecx
je 0x410a92
lea ecx, [ecx]
movzx eax, word [ecx - 2]
cmp eax, 0x20
je 0x410a87
add eax, 0xfffffff7
cmp ax, 4
jbe 0x410a87
cmp esi, ecx
je 0x410a92
movzx eax, word [edx]
cmp eax, 0x20
je 0x410a27
add eax, 0xfffffff7
cmp ax, 4
ja 0x410a2e
add edx, 2
cmp edx, ecx
jne 0x410a16
cmp edx, esi
je 0x410a92
push ecx
push edx
lea ecx, [ebp - 0x238]
call fcn.00406f20
mov edi, eax
or ecx, 0xffffffff
lea eax, [esi - 0xc]
lock xadd dword [eax], ecx
dec ecx
jne 0x410a57
push eax
call fcn.00417cf7
add esp, 4
mov esi, dword [edi]
mov dword [edi], 0
mov eax, dword [ebp - 0x238]
mov dword [ebp - 0x244], esi
test eax, eax
je 0x410aa9
lea ecx, [eax - 0xc]
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
jne 0x410aa9
push ecx
call fcn.00417cf7
add esp, 4
jmp 0x410aa9
add ecx, 0xfffffffe
cmp esi, ecx
jne 0x410a00
push ecx
sub ecx, edx
sar ecx, 1
push ecx
lea ecx, [ebp - 0x244]
call fcn.004060c0
mov esi, dword [ebp - 0x244]
cmp dword [esi - 8], 0
je 0x410d4f
lock inc dword [esi - 0xc]
mov dword [ebp - 0x238], esi
push 0xa8
mov byte [ebp - 4], 0x15
call fcn.00417a76
mov edi, eax
add esp, 4
mov dword [ebp - 0x250], edi
lea eax, [edi + 0xc]
mov dword [edi], vtable.std::_Associated_state_bool_.0
mov dword [edi + 4], 1
mov byte [edi + 8], 0
push eax
mov dword [eax], 0
mov dword [eax + 4], 0
call fcn.004147fd
xor eax, eax
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], eax
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], eax
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], eax
mov dword [edi + 0x38], eax
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], eax
mov dword [edi + 0x40], eax
lea eax, [edi + 0x44]
push eax
mov dword [edi + 0x3c], 0xffffffff
mov dword [edi + 0x14], 2
call fcn.004147fd
lea eax, [edi + 0x80]
mov byte [edi + 0x6c], 0
mov dword [edi + 0x70], 0
mov word [edi + 0x74], 0
mov byte [edi + 0x76], 0
mov dword [edi + 0x78], 0
mov dword [edi], vtable.std::_Packaged_state_bool____cdecl___void__.0
mov dword [eax], 0x442f1c
mov dword [ebp - 0x238], 0
mov dword [eax + 4], esi
mov dword [eax + 0x24], eax
mov dword [ebp - 0x90], edi
mov byte [ebp - 0x8c], 0
mov dword [ebp - 4], 0x16
lea eax, [edi + 4]
mov byte [ebp - 0x88], 1
mov dword [ebp - 0x26c], edi
mov byte [ebp - 0x268], 1
lock inc dword [eax]
push 0xc
mov dword [ebp - 0x240], 6
call fcn.00417a76
add esp, 0xc
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x240], 0xe
mov dword [eax], edi
mov byte [eax + 4], 0
mov byte [eax + 8], 1
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0x17
push ecx
push 0
push eax
push 0x413620
push 0
push 0
call fcn.0041ec21
add esp, 0x18
mov dword [ebp - 0x258], eax
test eax, eax
je 0x4114d3
mov byte [ebp - 4], 0x18
mov ecx, dword [ebp - 0x254]
test ecx, ecx
je 0x41142f
push ecx
push eax
call fcn.00416ef7
add esp, 8
test eax, eax
jne 0x411436
mov eax, 0xd
mov dword [ebp - 4], 0x14
mov dword [ebp - 0x240], eax
lea ecx, [ebp - 0x238]
mov byte [ebp - 4], 0x1b
call fcn.00406090
cmp byte [edi + 0x6c], 0
mov dword [ebp - 0x258], 0xc8
mov dword [ebp - 0x254], 0
jne 0x41143d
lea eax, [ebp - 0x258]
mov ecx, edi
push eax
call fcn.00412d20
test eax, eax
jne 0x410d40
mov dword [ebp - 0x26c], eax
mov dword [ebp - 0x258], edi
mov byte [ebp - 0x254], 1
mov byte [ebp - 4], 0x1c
cmp byte [edi + 0x6c], al
jne 0x411447
mov eax, dword [edi]
mov ecx, edi
push 1
mov eax, dword [eax + 8]
call eax
lea ecx, [edi + 4]
mov al, byte [eax]
mov byte [ebp - 0x245], al
mov eax, 0xffffffff
lock xadd dword [ecx], eax
jne 0x410cd3
mov ecx, dword [edi + 0x78]
test ecx, ecx
je 0x410ccb
mov eax, dword [ecx]
push edi
jmp 0x410cd1
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
cmp byte [ebp - 0x245], 0
je 0x410d40
lea eax, [ebp - 0x238]
mov byte [ebp - 4], 0x1e
push eax
push 0x442fa0
push 0
push esi
mov dword [ebp - 0x238], 0
call dword [sym.imp.SHELL32.dll_SHCreateItemFromParsingName]
mov esi, eax
test esi, esi
js 0x411451
mov eax, dword [ebp - 0x23c]
push dword [ebp - 0x238]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov esi, eax
test esi, esi
js 0x411492
mov byte [ebp - 4], 0x23
mov eax, dword [ebp - 0x238]
test eax, eax
je 0x410d39
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebp - 4], 0x1b
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 0xb
call fcn.00411630
mov eax, dword [ebp - 0x23c]
push 0
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov esi, eax
cmp esi, 0x800704c7
jne 0x410ecf
mov byte [ebp - 4], 0x2f
mov eax, dword [ebp - 0x23c]
test eax, eax
je 0x410d7f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebp - 0x23c], 0
call dword [sym.imp.ole32.dll_CoUninitialize]
lea ecx, [ebp - 0x244]
call fcn.00406090
lea ecx, [ebp - 0x27c]
call fcn.004054d0
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00417a68
mov esp, ebp
pop ebp
ret
test esi, esi
js 0x4114e4
mov dword [ebp - 0x25c], 0
mov byte [ebp - 4], 0x32
lea edx, [ebp - 0x25c]
mov eax, dword [ebp - 0x23c]
push edx
push eax
mov ecx, dword [eax]
mov dword [ebp - 0x25c], 0
call dword [ecx + 0x50]
mov esi, eax
test esi, esi
js 0x411528
mov eax, dword [ebp - 0x25c]
lea edx, [ebp - 0x24c]
push edx
mov dword [ebp - 0x24c], 0
push 0x80058000
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov esi, eax
test esi, esi
js 0x41156c
lea eax, [ebp - 0x24c]
mov dword [ebp - 0x270], eax
call fcn.00414e42
mov dword [ebp - 0x26c], eax
mov byte [ebp - 0x268], 0
mov dword [ebp - 0xb8], 0
mov byte [ebp - 4], 0x39
xor eax, eax
xor edi, edi
mov dword [ebp - 0x2c], eax
or dword [ebp - 0x240], 0x40
mov esi, dword [ebp - 0x24c]
mov ecx, esi
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edi
lea edx, [ecx + 2]
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], al
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410f93
sub ecx, edx
sar ecx, 1
lea eax, [esi + ecx*2]
mov dword [ebp - 0x238], eax
jmp 0x410fb0
cmp esi, eax
je 0x41101f
movzx edx, word [esi]
mov edi, 0x7ff
add esi, 2
mov ecx, edx
lea eax, [edx + 0x2800]
cmp ax, di
ja 0x411008
mov eax, 0xdc00
cmp dx, ax
jae 0x411003
cmp esi, dword [ebp - 0x238]
je 0x411003
movzx edx, word [esi]
mov edi, 0x3ff
lea eax, [edx + 0x2400]
cmp ax, di
ja 0x411003
shl ecx, 0xa
mov eax, edx
add ecx, 0xfca02400
add ecx, eax
add esi, 2
jmp 0x411008
mov ecx, 0xfffd
lea eax, [ebp - 0x2c]
push eax
call fcn.00408fc0
mov edi, dword [ebp - 0x1c]
add esp, 4
mov eax, dword [ebp - 0x238]
jmp 0x410fb0
mov dword [ebp - 4], 0x3a
lea esi, [ebp - 0x2c]
cmp dword [ebp - 0x18], 0xf
mov dword [ebp - 0x238], esi
jbe 0x41103e
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x238], eax
mov edx, dword [ebp - 0x260]
lea ecx, [ebp - 0x240]
mov dword [ebp - 0x254], edi
call fcn.00409110
lea ecx, [ebp - 0x240]
mov byte [ebp - 4], 0x3b
call fcn.004094d0
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x240]
lock inc dword [eax - 0xc]
mov dword [ebp - 0x80], eax
mov byte [ebp - 0x5c], 0
push 0
push edi
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 0x3c
call fcn.00409a70
lea eax, [ebp - 0x84]
xor esi, esi
lea ecx, [ebp - 0xdc]
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x254], ecx
mov edx, 0x40000
cmp esi, edi
jae 0x4110d3
mov ecx, edi
sub ecx, esi
cmp edx, ecx
jae 0x4110ba
mov ecx, edx
mov eax, dword [ebp - 0x238]
push ecx
add eax, esi
lea ecx, [ebp - 0x258]
push eax
call fcn.00409e20
add esi, eax
jmp 0x4110a7
lea ecx, [ebp - 0x84]
call fcn.00409360
lea eax, [ebp - 0x240]
mov dword [ebp - 0x90], eax
call fcn.00414e42
mov esi, eax
mov byte [ebp - 0x88], 0
mov dword [ebp - 0x8c], esi
mov edx, dword [ebp - 0x260]
push ecx
lea ecx, [ebp - 0x240]
mov byte [ebp - 4], 0x42
call fcn.00404320
add esp, 4
call fcn.00414e42
push dword [ebp - 0x250]
cmp eax, esi
lea ecx, [ebp - 0x90]
setg dl
call fcn.00409f90
add esp, 4
lea ecx, [ebp - 0x84]
call fcn.004098d0
mov eax, dword [ebp - 0x240]
test eax, eax
je 0x411160
lea ecx, [eax - 0xc]
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
jne 0x411160
push ecx
call fcn.00417cf7
add esp, 4
mov byte [ebp - 4], 0x38
mov ecx, dword [ebp - 0x18]
cmp ecx, 0xf
jbe 0x411198
mov edx, dword [ebp - 0x2c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x41118e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4115b0
push ecx
push edx
call fcn.00417cfc
add esp, 8
mov ecx, dword [ebp - 0xb8]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
test ecx, ecx
je 0x4111c7
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
lea eax, [ebp - 0xdc]
cmp ecx, eax
setne al
push eax
call edx
call fcn.00414e42
cmp eax, dword [ebp - 0x26c]
lea ecx, [ebp - 0x270]
push dword [ebp - 0x250]
setg dl
call fcn.00412d00
add esp, 4
mov byte [ebp - 4], 0x43
mov eax, dword [ebp - 0x25c]
test eax, eax
je 0x4111fd
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebp - 0x25c], 0
mov byte [ebp - 4], 0x44
mov eax, dword [ebp - 0x23c]
test eax, eax
je 0x41121b
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebp - 0x23c], 0
call dword [sym.imp.ole32.dll_CoUninitialize]
lea ecx, [ebp - 0x244]
call fcn.00406090
lea ecx, [ebp - 0x27c]
call fcn.004054d0
xor eax, eax
jmp 0x410daa
push 0x43e60c
lea ecx, [ebp - 0x44]
call fcn.00405a30
mov edx, esi
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x6c]
call fcn.0040fa80
mov esi, eax
sub esp, 0x18
mov byte [ebp - 4], 4
lea edx, [ebp - 0x44]
mov ecx, esp
call fcn.00401680
push esi
mov edx, 0x43dd20
lea ecx, [ebp - 0xb4]
call fcn.00406910
add esp, 0x1c
push eax
lea ecx, [ebp - 0x218]
mov byte [ebp - 4], 5
call fcn.00401c00
push 0x447c58
lea eax, [ebp - 0x218]
push eax
call fcn.004191cc
push 0x4426a8
lea ecx, [ebp - 0x44]
call fcn.00405e30
push edi
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x6c]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0xf4]
mov byte [ebp - 4], 9
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0xf4]
push eax
call fcn.004191cc
push str.::CoCreateInstance_CLSID_FileOpenDialog__nullptr__CLSCTX_ALL__IID_PPV_ARGS_fileDlg.init____
lea ecx, [ebp - 0x44]
call fcn.00405e30
push edi
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x6c]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 0xd
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x10c]
push eax
call fcn.004191cc
push str.fileDlg__SetClientGuid_persistenceGuid_
lea ecx, [ebp - 0x44]
call fcn.00405e30
push edi
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x6c]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 0xf
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x124]
push eax
call fcn.004191cc
push str.fileDlg__GetOptions_dlgOptions_
lea ecx, [ebp - 0x44]
call fcn.00405e30
push edi
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x6c]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x13c]
mov byte [ebp - 4], 0x11
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x13c]
push eax
call fcn.004191cc
push str.fileDlg__SetOptions_dlgOptions__FOS_PICKFOLDERS__FOS_NOVALIDATE__FOS_FORCEFILESYSTEM_
lea ecx, [ebp - 0x44]
call fcn.00405e30
push edi
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 0x12
lea ecx, [ebp - 0x6c]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x154]
mov byte [ebp - 4], 0x13
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x154]
push eax
call fcn.004191cc
push 1
call fcn.00414de4
push 1
call fcn.00414de4
mov ecx, 4
call fcn.0040f950
mov ecx, 4
call fcn.0040f950
push str.::SHCreateItemFromParsingName_defaultFolderPath.c_str____nullptr__IID_PPV_ARGS_defaultFolderItem.init____
lea ecx, [ebp - 0x44]
call fcn.00405e30
push esi
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 0x1f
lea ecx, [ebp - 0x6c]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x16c]
mov byte [ebp - 4], 0x20
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x16c]
push eax
call fcn.004191cc
push str.fileDlg__SetFolder_defaultFolderItem.get___
lea ecx, [ebp - 0x44]
call fcn.00405e30
push esi
lea edx, [ebp - 0x44]
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0x6c]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x22
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x184]
push eax
call fcn.004191cc
push 6
mov dword [ebp - 0x254], 0
call fcn.00414de4
push str.IFileDialog::Show
lea ecx, [ebp - 0x6c]
call fcn.00405e30
push esi
lea edx, [ebp - 0x6c]
mov byte [ebp - 4], 0x30
lea ecx, [ebp - 0xb4]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x1cc]
mov byte [ebp - 4], 0x31
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x1cc]
push eax
call fcn.004191cc
push str.fileDlg__GetResult_folderItem.init___
lea ecx, [ebp - 0x6c]
call fcn.00405e30
push esi
lea edx, [ebp - 0x6c]
mov byte [ebp - 4], 0x33
lea ecx, [ebp - 0xb4]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x1e4]
mov byte [ebp - 4], 0x34
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x1e4]
push eax
call fcn.004191cc
push str.folderItem__GetDisplayName_SIGDN_FILESYSPATH__folderPath_
lea ecx, [ebp - 0x6c]
call fcn.00405e30
push esi
lea edx, [ebp - 0x6c]
mov byte [ebp - 4], 0x35
lea ecx, [ebp - 0xb4]
call fcn.00401bc0
add esp, 4
push eax
lea ecx, [ebp - 0x1fc]
mov byte [ebp - 4], 0x36
call fcn.00401b80
push 0x447aac
lea eax, [ebp - 0x1fc]
push eax
call fcn.004191cc
call fcn.0041c7fe
int3