Function at 0x404569
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 + 0x20], ebx
mov eax, dword [ebp + 8]
mov dword [esp + 0x24], 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 + 0x28], 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 + 0x34], ecx
mov dword [esp + 0x24], 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.00403cc2
test eax, eax
jne 0x404656
mov ebx, 0x8007000e
jmp 0x404b39
cmp dword [ebx + 0x1c], 1
jge 0x404666
mov ebx, 0x8007139f
jmp 0x404b39
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x404b2e
mov edi, dword [esp + 0x84]
test edi, edi
je 0x404b2e
test esi, esi
je 0x404b2e
mov eax, dword [ebx + 0x24]
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x4046b5
test dx, dx
je 0x4046b1
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x4046b5
add ecx, 4
add eax, 4
test dx, dx
jne 0x40468f
xor eax, eax
jmp 0x4046ba
sbb eax, eax
or eax, 1
test eax, eax
je 0x4046c8
mov ebx, 0x80070005
jmp 0x404b39
and dword [esp + 0x5c], 0
and dword [esp + 0x48], 0
cmp dword [ebx + 0x54], 0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], 0x28
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], eax
je 0x404835
cmp dword [0x40f37c], 0
je 0x40478d
push esi
push ecx
mov ecx, ebx
call fcn.00403dee
mov ebx, eax
test ebx, ebx
js 0x404b39
mov ecx, dword [esi]
test ecx, ecx
je 0x404723
call fcn.00408d6a
mov ebx, eax
jmp 0x404725
xor ebx, ebx
test ebx, ebx
js 0x404b39
mov ecx, dword [esi]
call fcn.00408e9f
mov ebx, eax
test ebx, ebx
js 0x404b39
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 0x404786
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 0x4047ed
and dword [esp + 0x4c], 0
jmp 0x4047ed
cmp dword [ebx + 0x58], 0
mov byte [esp + 0xe], 1
je 0x4047e5
push esi
push ecx
mov ecx, ebx
call fcn.00403dee
mov ebx, eax
test ebx, ebx
js 0x404b39
mov ecx, dword [esi]
test ecx, ecx
je 0x4047ba
call fcn.00408d6a
mov ebx, eax
jmp 0x4047bc
xor ebx, ebx
test ebx, ebx
js 0x404b39
mov ecx, dword [esi]
call fcn.00408e9f
mov ebx, eax
test ebx, ebx
js 0x404b39
mov bh, byte [esp + 0xe]
xor bl, bl
mov dword [esp + 0x60], 1
jmp 0x4047e9
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 0x404829
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 0x404841
and dword [esp + 0x4c], 0
and dword [esp + 0x50], 0
jmp 0x404841
mov bh, 1
mov bl, bh
mov byte [esp + 0xe], bh
mov byte [esp + 0xf], bl
test bl, bl
je 0x404925
lea eax, [esp + 0x190]
mov byte [esp + 0x88], 0
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x404880
push ecx
lea edx, [esp + 0x8c]
lea ecx, [esp + 0x194]
call fcn.00408616
mov ebx, eax
jmp 0x404895
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
test ebx, ebx
jle 0x404897
movzx ebx, bx
or ebx, 0x80070000
test ebx, ebx
js 0x404b39
push esi
mov edx, edi
lea ecx, [esp + 0x8c]
call fcn.00408773
mov ebx, eax
test ebx, ebx
js 0x404b39
mov ecx, dword [esi]
test ecx, ecx
je 0x4048c5
call fcn.00408d6a
mov ebx, eax
jmp 0x4048c7
xor ebx, ebx
test ebx, ebx
js 0x404b39
mov ecx, dword [esi]
call fcn.00408e9f
mov ebx, eax
test ebx, ebx
js 0x404b39
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 + 0x1c], eax
cmp eax, 0xffffffff
jne 0x404921
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
test ebx, ebx
jle 0x404b39
movzx ebx, bx
or ebx, 0x80070000
jmp 0x404b39
mov bh, byte [esp + 0xe]
test bh, bh
je 0x404a6e
push 0x10
pop ecx
call fcn.0040352e
mov edi, eax
mov dword [esp + 0x18], eax
test edi, edi
je 0x404956
and dword [edi + 0xc], 0
and dword [edi + 8], 0
mov dword [edi], 0x40108c
mov dword [edi + 4], 1
jmp 0x40495c
xor edi, edi
mov dword [esp + 0x18], edi
test edi, edi
je 0x40464c
push dword [esp + 0x10]
mov ecx, edi
call fcn.004096f6
mov ebx, eax
test ebx, ebx
js 0x404b39
mov esi, dword [edi]
lea eax, [esp + 0x28]
mov edi, esp
push eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi]
push 0x402310
push eax
call dword [0x410370]
call dword [esi]
cmp edi, esp
je 0x4049a1
mov ecx, 4
int 0x29
mov ebx, eax
test ebx, ebx
js 0x404b35
mov ebx, dword [esp + 0x64]
test ebx, ebx
je 0x404a32
push ebx
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
je 0x404a32
sub esp, 0x10
mov edx, dword [esp + 0x20]
mov edi, esp
mov ecx, dword [esp + 0x34]
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 + 0x3c]
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.00409ace
test eax, eax
jns 0x404a6e
sub esp, 0x10
mov edx, dword [esp + 0x20]
mov edi, esp
mov ecx, dword [esp + 0x34]
lea esi, [esp + 0x3c]
lea eax, [esp + 0x4c]
push eax
push dword [ebp + 0x1c]
mov eax, dword [esp + 0x7c]
push dword [ebp + 0x18]
movsd dword es:[edi], dword [esi]
push eax
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.00409ace
mov ebx, eax
test ebx, ebx
jns 0x404a6e
jmp 0x404b39
sub esp, 0x10
mov ebx, dword [esp + 0x2c]
mov edi, esp
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
lea esi, [esp + 0x3c]
lea eax, [esp + 0x4c]
push eax
push dword [ebp + 0x1c]
movsd dword es:[edi], dword [esi]
push dword [ebp + 0x18]
push 0
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.00409ace
mov ebx, eax
test ebx, ebx
js 0x404b39
mov edi, dword [esp + 0x20]
cmp dword [edi + 0x54], 0
jne 0x404a87
mov ecx, dword [esi]
call fcn.0040942f
test eax, eax
je 0x4046be
cmp byte [esp + 0xf], 0
je 0x404aa2
lea ecx, [edi + 0x60]
mov edx, esi
call fcn.004088fb
mov ebx, eax
test ebx, ebx
js 0x404b39
mov ecx, dword [esi]
lea edx, [edi + 0x4c]
call fcn.004078f7
mov ebx, eax
test ebx, ebx
js 0x404b39
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x404b09
cmp dword [esp + 0x50], 0
je 0x404b09
mov edx, dword [ecx + 0x14]
mov eax, ecx
test edx, edx
je 0x404ad7
sub edx, eax
mov dword [ecx + 0x14], edx
mov ecx, dword [esp + 0x4c]
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x404ae7
sub edx, eax
mov dword [eax + 0x1c], edx
mov ecx, dword [esp + 0x4c]
mov edx, dword [eax + 0x24]
test edx, edx
je 0x404af7
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 0x404b17
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 + 0x20]
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 0x404b48
mov ebx, 0x80070057
jmp 0x404b39
mov esi, dword [esp + 0x14]
test esi, esi
je 0x404b48
push dword [esi]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
and dword [esi], 0
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x404b6d
mov eax, dword [ecx]
mov edi, esp
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x410370]
call esi
cmp edi, esp
je 0x404b6d
mov ecx, 4
int 0x29
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x404b92
mov eax, dword [ecx]
mov edi, esp
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x410370]
call esi
cmp edi, esp
je 0x404b92
mov ecx, 4
int 0x29
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x404ba6
cmp eax, 0xffffffff
je 0x404ba6
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
js 0x404bb2
mov eax, dword [esp + 0x20]
and dword [eax + 0x58], 0
lea ecx, [esp + 0x88]
call fcn.00407d65
mov ecx, dword [esp + 0x20]
call fcn.00403cde
mov ecx, dword [esp + 0x29c]
mov eax, ebx
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040dd40
mov esp, ebp
pop ebp
ret 0x28