Function at 0x4045ce
Capabilities:
Get common file path

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x294
mov eax, dword [0x40f014]
xor eax, esp
mov dword [esp + 0x290], eax
push ebx
push esi
push edi
mov dword [esp + 0x80], edx
mov ebx, ecx
mov dword [esp + 0x1c], ebx
mov eax, dword [ebp + 8]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 0x14]
xor ecx, ecx
mov esi, dword [ebp + 0x24]
mov dword [esp + 0x64], eax
mov eax, dword [ebp + 0x28]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x2c]
push 0x104
mov dword [esp + 0x70], eax
lea eax, [esp + 0x8c]
push ecx
push eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], 0xd41e4f1d
mov dword [esp + 0x3c], 0x11d1a407
mov dword [esp + 0x40], 0xc000c98b
mov dword [esp + 0x44], 0x410aa34f
mov dword [esp + 0x7c], 0xaac56b
mov dword [esp + 0x80], 0x11d0cd44
mov dword [esp + 0x84], 0xc000c28c
mov dword [esp + 0x88], 0xee95c24f
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], ecx
call sub.msvcrt.dll_memset
add esp, 0xc
lea edi, [esp + 0x3c]
xor eax, eax
push 0xa
pop ecx
rep stosd dword es:[edi], eax
mov ecx, ebx
call fcn.00403d45
test eax, eax
jne 0x4046bb
mov ebx, 0x8007000e
jmp 0x404b79
cmp dword [ebx + 0x1c], 1
jge 0x4046cb
mov ebx, 0x8007139f
jmp 0x404b79
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x404b6e
mov edi, dword [esp + 0x84]
test edi, edi
je 0x404b6e
test esi, esi
je 0x404b6e
mov eax, dword [ebx + 0x24]
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x40471a
test dx, dx
je 0x404716
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x40471a
add ecx, 4
add eax, 4
test dx, dx
jne 0x4046f4
xor eax, eax
jmp 0x40471f
sbb eax, eax
or eax, 1
test eax, eax
je 0x40472d
mov ebx, 0x80070005
jmp 0x404b79
and dword [esp + 0x5c], 0
and dword [esp + 0x48], 0
cmp dword [ebx + 0x54], 0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x3c], 0x28
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], eax
je 0x40489a
cmp dword [0x40f37c], 0
je 0x4047f2
push esi
push ecx
mov ecx, ebx
call fcn.00403e61
mov ebx, eax
test ebx, ebx
js 0x404b79
mov ecx, dword [esi]
test ecx, ecx
je 0x404788
call fcn.00408e67
mov ebx, eax
jmp 0x40478a
xor ebx, ebx
test ebx, ebx
js 0x404b79
mov ecx, dword [esi]
call fcn.00408f9a
mov ebx, eax
test ebx, ebx
js 0x404b79
push 0x3c
pop eax
xor bh, bh
mov dword [esp + 0x50], eax
xor bl, bl
mov byte [esp + 0xe], bh
push eax
mov byte [esp + 0x13], bl
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov dword [esp + 0x4c], eax
test eax, eax
je 0x4047eb
push dword [esp + 0x50]
push 0
push eax
call sub.msvcrt.dll_memset
mov ecx, dword [esp + 0x58]
add esp, 0xc
mov eax, dword [esp + 0x50]
mov dword [ecx], eax
mov eax, dword [esp + 0x4c]
mov dword [eax + 8], 1
jmp 0x404852
and dword [esp + 0x4c], 0
jmp 0x404852
cmp dword [ebx + 0x58], 0
mov byte [esp + 0xe], 1
je 0x40484a
push esi
push ecx
mov ecx, ebx
call fcn.00403e61
mov ebx, eax
test ebx, ebx
js 0x404b79
mov ecx, dword [esi]
test ecx, ecx
je 0x40481f
call fcn.00408e67
mov ebx, eax
jmp 0x404821
xor ebx, ebx
test ebx, ebx
js 0x404b79
mov ecx, dword [esi]
call fcn.00408f9a
mov ebx, eax
test ebx, ebx
js 0x404b79
mov bh, byte [esp + 0xe]
xor bl, bl
mov dword [esp + 0x60], 1
jmp 0x40484e
mov bl, 1
mov bh, bl
mov byte [esp + 0xf], bl
push 0x3c
pop ecx
push ecx
mov dword [esp + 0x54], ecx
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov dword [esp + 0x4c], eax
test eax, eax
je 0x40488e
push dword [esp + 0x50]
push 0
push eax
call sub.msvcrt.dll_memset
mov ecx, dword [esp + 0x58]
add esp, 0xc
mov eax, dword [esp + 0x50]
mov dword [ecx], eax
mov eax, dword [esp + 0x4c]
mov dword [eax + 8], 1
jmp 0x4048a6
and dword [esp + 0x4c], 0
and dword [esp + 0x50], 0
jmp 0x4048a6
mov bh, 1
mov bl, bh
mov byte [esp + 0xe], bh
mov byte [esp + 0xf], bl
test bl, bl
je 0x404982
lea eax, [esp + 0x190]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x4048dd
push ecx
lea edx, [esp + 0x8c]
lea ecx, [esp + 0x194]
call fcn.0040871f
mov ebx, eax
jmp 0x4048f2
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
test ebx, ebx
jle 0x4048f4
movzx ebx, bx
or ebx, 0x80070000
test ebx, ebx
js 0x404b79
push esi
mov edx, edi
lea ecx, [esp + 0x8c]
call fcn.00408878
mov ebx, eax
test ebx, ebx
js 0x404b79
mov ecx, dword [esi]
test ecx, ecx
je 0x404922
call fcn.00408e67
mov ebx, eax
jmp 0x404924
xor ebx, ebx
test ebx, ebx
js 0x404b79
mov ecx, dword [esi]
call fcn.00408f9a
mov ebx, eax
test ebx, ebx
js 0x404b79
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocString
push dword [esi]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [esp + 0x18], eax
cmp eax, 0xffffffff
jne 0x40497e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
test ebx, ebx
jle 0x404b79
movzx ebx, bx
or ebx, 0x80070000
jmp 0x404b79
mov bh, byte [esp + 0xe]
test bh, bh
je 0x404a93
push 0x10
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
mov dword [esp + 0x28], edi
test edi, edi
je 0x404c20
push dword [esp + 0x10]
and dword [edi + 0xc], 0
mov ecx, edi
and dword [edi + 8], 0
mov dword [edi], 0x40108c
mov dword [edi + 4], 1
call fcn.004097b2
mov ebx, eax
test ebx, ebx
js 0x404b79
mov esi, dword [edi]
lea eax, [esp + 0x24]
mov edi, esp
push eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi]
push 0x402320
push eax
call dword [0x41036c]
call dword [esi]
cmp edi, esp
je 0x4049fb
mov ecx, 4
int 0x29
mov ebx, eax
test ebx, ebx
js 0x404b75
mov ebx, dword [esp + 0x64]
test ebx, ebx
je 0x404b2e
push ebx
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
je 0x404b2e
sub esp, 0x10
mov edx, dword [esp + 0x20]
mov edi, esp
mov ecx, dword [esp + 0x30]
lea esi, [esp + 0x80]
lea eax, [esp + 0x4c]
push eax
push dword [ebp + 0x1c]
movsd dword es:[edi], dword [esi]
push dword [ebp + 0x18]
push ebx
mov ebx, dword [esp + 0x38]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x34]
push dword [esi]
push ebx
call fcn.00409b82
test eax, eax
jns 0x404a93
sub esp, 0x10
lea eax, [esp + 0x4c]
mov edi, esp
push eax
push dword [ebp + 0x1c]
mov eax, dword [esp + 0x7c]
push dword [ebp + 0x18]
push eax
mov edx, dword [esp + 0x30]
lea esi, [esp + 0x4c]
mov ecx, dword [esp + 0x40]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x34]
push dword [esi]
push ebx
call fcn.00409b82
mov ebx, eax
test ebx, ebx
js 0x404b79
mov edi, dword [esp + 0x1c]
cmp dword [edi + 0x54], 0
jne 0x404aac
mov ecx, dword [esi]
call fcn.0040950a
test eax, eax
je 0x404723
cmp byte [esp + 0xf], 0
je 0x404ac7
lea ecx, [edi + 0x60]
mov edx, esi
call fcn.004089fe
mov ebx, eax
test ebx, ebx
js 0x404b79
mov ecx, dword [esi]
lea edx, [edi + 0x4c]
call fcn.004079fd
mov ebx, eax
test ebx, ebx
js 0x404b79
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x404b49
cmp dword [esp + 0x50], 0
je 0x404b49
mov edx, dword [ecx + 0x14]
mov eax, ecx
test edx, edx
je 0x404afc
sub edx, eax
mov dword [ecx + 0x14], edx
mov ecx, dword [esp + 0x4c]
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x404b0c
sub edx, eax
mov dword [eax + 0x1c], edx
mov ecx, dword [esp + 0x4c]
mov edx, dword [eax + 0x24]
test edx, edx
je 0x404b1c
sub edx, eax
mov dword [eax + 0x24], edx
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x50]
mov dword [edx], eax
mov eax, dword [esp + 0x6c]
mov dword [eax], ecx
jmp 0x404b57
mov ebx, dword [esp + 0x18]
lea eax, [esp + 0x3c]
sub esp, 0x10
mov edi, esp
push eax
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push 0
jmp 0x404a6d
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
and dword [edx], 0
and dword [eax], 0
mov esi, dword [ebp + 0x20]
add edi, 0x30
mov eax, dword [esp + 0x1c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [eax + 0x1c], 2
jmp 0x404b88
mov ebx, 0x80070057
jmp 0x404b79
mov esi, dword [esp + 0x14]
test esi, esi
je 0x404b88
push dword [esi]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
and dword [esi], 0
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x404bad
mov eax, dword [ecx]
mov edi, esp
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x41036c]
call esi
cmp edi, esp
je 0x404bad
mov ecx, 4
int 0x29
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x404bd2
mov eax, dword [ecx]
mov edi, esp
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x41036c]
call esi
cmp edi, esp
je 0x404bd2
mov ecx, 4
int 0x29
mov eax, dword [esp + 0x18]
test eax, eax
je 0x404be6
cmp eax, 0xffffffff
je 0x404be6
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
js 0x404bf2
mov eax, dword [esp + 0x1c]
and dword [eax + 0x58], 0
lea ecx, [esp + 0x88]
call fcn.00407e5f
mov ecx, dword [esp + 0x1c]
call fcn.00403d59
mov ecx, dword [esp + 0x29c]
mov eax, ebx
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040de60
mov esp, ebp
pop ebp
ret 0x28
call fcn.0040a5a6
int3