Function at 0x407710
Capabilities:
Get common file path

Disassembly:
push ebp
push edi
push esi
push ebx
push eax
mov eax, 0x10e8
call fcn.0040ee4c
xor esi, esi
sub esp, eax
mov eax, dword [esp + eax]
mov ebx, eax
mov word [eax], si
movzx eax, word [edx]
test ax, ax
je 0x407899
lea edi, [edx + 2]
mov ebp, ecx
xor edx, edx
jmp 0x40775d
test edx, edx
je 0x407878
mov word [edx], ax
add edx, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
je 0x407899
cmp ax, 0x25
jne 0x407740
test edx, edx
je 0x4078b0
xor eax, eax
mov word [edx], ax
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.TEMP
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x407aa0
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.PROGRAM
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x407b00
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.PROGRAM_BASE
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x407a40
lea eax, [esp + 0x8e0]
mov dword [esp + 4], 0x4160b2
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x407c70
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.HOME
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x407b70
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.CACHE_DIR
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x4078d0
lea esi, [esp + 0x2d8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1c
mov dword [esp], 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
sub esp, 0x14
test eax, eax
je 0x407c10
add esp, 0x10ec
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
test ebp, ebp
je 0x407865
xor ecx, ecx
mov word [ebx], ax
sub ebp, 1
add ebx, 2
mov word [ebx], cx
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x40775d
xor eax, eax
mov word [ebx], ax
add esp, 0x10ec
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
xor eax, eax
lea edx, [esp + 0x8e0]
mov word [esp + 0x8e0], ax
jmp 0x40774e
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.TIME
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x407865
lea eax, [esp + 0x48]
mov dword [esp + 0x48], 0
mov dword [esp], eax
mov dword [esp + 0x4c], 0
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
sub esp, 4
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
lea esi, [esp + 0x4e0]
mov dword [esp + 8], str._lld
mov dword [esp + 4], 0x400
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov dword [esp], esi
call fcn.00401ad0
cmp word [ebx], 0
je 0x407d93
mov eax, ebp
mov ecx, ebx
lea esi, [esi]
add ecx, 2
sub eax, 1
cmp word [ecx], 0
jne 0x407950
movzx edx, byte [esp + 0x4e0]
mov byte [esp + 0x30], dl
test dl, dl
je 0x407a0d
add eax, esi
mov dword [esp + 0x34], edi
movzx edi, byte [esp + 0x30]
mov edx, esi
mov dword [esp + 0x2c], eax
mov esi, ecx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x38], ebp
mov ebp, edx
lea esi, [esi]
mov eax, dword [esp + 0x2c]
mov ebx, esi
sub eax, ebp
cmp word [esi], 0
je 0x4079ac
nop
add ebx, 2
sub eax, 1
cmp word [ebx], 0
jne 0x4079a0
test eax, eax
je 0x414e80
mov dword [esp], ebx
add ebp, 1
add esi, 2
call sub.msvcrt.dll_wcslen
mov ecx, edi
mov dword [esp + 8], 2
mov byte [esp + 0x2d8], cl
lea eax, [ebx + eax*2]
lea ecx, [esp + 0x2d8]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov byte [esp + 0x2d9], 0
call sub.msvcrt.dll_mbstowcs
movzx edi, byte [ebp]
mov eax, edi
test al, al
jne 0x407990
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0x38]
cmp word [ebx], 0
je 0x407a30
xor eax, eax
nop
add ebx, 2
sub ebp, 1
cmp word [ebx], 0
jne 0x407ac0
test al, al
jne 0x407aeb
lea esi, [esi]
nop
xor edx, edx
jmp 0x40774e
mov dword [esp], ebx
call sub.msvcrt.dll_wcslen
mov ecx, ebp
mov edx, str._PROGRAM_
sub ecx, eax
mov eax, ebx
call fcn.00407710
test al, al
je 0x407865
mov dword [esp], ebx
call sub.msvcrt.dll_wcslen
cmp eax, 3
jbe 0x407b59
lea esi, [ebx + eax*2 - 8]
mov dword [esp + 4], str..exe
mov dword [esp], esi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x407b59
xor ecx, ecx
mov word [esi], cx
cmp word [ebx], 0
je 0x407a30
xor eax, eax
jmp 0x407a10
mov dword [esp + 4], ebx
mov dword [esp], ebp
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
sub esp, 8
cmp word [ebx], 0
je 0x407aeb
mov eax, 1
lea esi, [esi]
nop
add ebx, 2
sub ebp, 1
cmp word [ebx], 0
jne 0x407ac0
test al, al
je 0x407a30
jmp 0x407aeb
sub ebx, 2
xor esi, esi
add ebp, 1
mov word [ebx], si
cmp word [ebx - 2], 0x5c
je 0x407ae0
xor edx, edx
jmp 0x40774e
mov eax, dword [sym.imp.msvcrt.dll___wargv]
cmp word [ebx], 0
mov edx, ebp
mov eax, dword [eax]
mov ecx, dword [eax]
mov eax, ebx
je 0x407b24
lea esi, [esi]
nop
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x407b18
movzx esi, word [ecx]
test si, si
je 0x407b54
test edx, edx
jne 0x407b40
jmp 0x407db2
test edx, edx
je 0x414e80
add ecx, 2
mov word [eax], si
add eax, 2
sub edx, 1
movzx esi, word [ecx]
test si, si
jne 0x407b38
xor esi, esi
mov word [eax], si
cmp word [ebx], 0
je 0x407a30
xor eax, eax
jmp 0x407a10
lea esi, [esp + 0xd0]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x28
mov dword [esp], 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
sub esp, 0x14
test eax, eax
jne 0x407865
cmp word [ebx], 0
mov edx, ebp
mov eax, ebx
je 0x407bc4
lea esi, [esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x407bb8
movzx ecx, word [esp + 0xd0]
test cx, cx
je 0x407bf4
lea esi, [esi]
test edx, edx
je 0x414e80
add esi, 2
mov word [eax], cx
add eax, 2
sub edx, 1
movzx ecx, word [esi]
test cx, cx
jne 0x407bd8
xor edx, edx
mov word [eax], dx
cmp word [ebx], 0
jne 0x407ab6
jmp 0x407aeb
cmp word [ebx], 0
mov edx, ebp
mov eax, ebx
je 0x407c2c
lea esi, [esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x407c20
movzx ecx, word [esp + 0x2d8]
test cx, cx
je 0x407bf4
lea esi, [esi]
test edx, edx
je 0x414e80
add esi, 2
mov word [eax], cx
add eax, 2
sub edx, 1
movzx ecx, word [esi]
test cx, cx
jne 0x407c40
xor edx, edx
mov word [eax], dx
cmp word [ebx], 0
jne 0x407ab6
jmp 0x407aeb
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
lea esi, [esp + 0x50]
mov dword [esp + 8], 0x4160ba
mov dword [esp + 0xc], eax
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], esi
call fcn.00401ad0
cmp word [ebx], 0
je 0x407d77
mov eax, ebp
mov ecx, ebx
lea esi, [esi]
add ecx, 2
sub eax, 1
cmp word [ecx], 0
jne 0x407ca8
movzx edx, byte [esp + 0x50]
mov byte [esp + 0x30], dl
test dl, dl
je 0x407a0d
add eax, esi
mov dword [esp + 0x38], ebx
mov edx, esi
mov esi, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], ebp
movzx ebp, byte [esp + 0x30]
mov dword [esp + 0x34], edi
mov edi, edx
lea esi, [esi]
mov eax, dword [esp + 0x2c]
mov ebx, esi
sub eax, edi
cmp word [esi], 0
je 0x407d0c
lea esi, [esi]
lea esi, [esi]
add ebx, 2
sub eax, 1
cmp word [ebx], 0
jne 0x407d00
test eax, eax
je 0x414e80
mov dword [esp], ebx
add edi, 1
add esi, 2
call sub.msvcrt.dll_wcslen
mov ecx, ebp
mov dword [esp + 8], 2
mov byte [esp + 0x4e0], cl
lea eax, [ebx + eax*2]
lea ecx, [esp + 0x4e0]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov byte [esp + 0x4e1], 0
call sub.msvcrt.dll_mbstowcs
movzx ebp, byte [edi]
mov eax, ebp
test al, al
jne 0x407ce8
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0x3c]
cmp word [ebx], 0
je 0x407a30
xor eax, eax
jmp 0x407a10
movzx edx, byte [esp + 0x50]
mov eax, ebp
mov ecx, ebx
mov byte [esp + 0x30], dl
test dl, dl
jne 0x407cc5
xor edx, edx
jmp 0x40774e
movzx edx, byte [esp + 0x4e0]
mov eax, ebp
mov ecx, ebx
mov byte [esp + 0x30], dl
test dl, dl
jne 0x407970
xor edx, edx
jmp 0x40774e
jmp 0x414e80
call sub.msvcrt.dll_abort