Function at 0x407c40
Capabilities:
Get common file path

Disassembly:
push ebp
push edi
push esi
push ebx
push eax
mov eax, 0x10e8
call fcn.0040fd7c
xor edi, edi
sub esp, eax
mov eax, dword [esp + eax]
mov ebx, eax
mov word [eax], di
movzx eax, word [edx]
test ax, ax
je 0x407cb4
lea ebp, [edx + 2]
mov edi, ecx
xor edx, edx
jmp 0x407c82
mov word [edx], ax
add edx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
je 0x407cb4
cmp ax, 0x7b
je 0x407cd0
cmp ax, 0x7d
je 0x407ce8
test edx, edx
jne 0x407c70
test edi, edi
je 0x407f90
xor ecx, ecx
mov word [ebx], ax
sub edi, 1
add ebx, 2
mov word [ebx], cx
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x407c82
xor eax, eax
mov word [ebx], ax
add esp, 0x10ec
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
xor esi, esi
lea edx, [esp + 0x8e0]
mov word [esp + 0x8e0], si
jmp 0x407c76
xor ecx, ecx
lea eax, [esp + 0x8e0]
mov word [edx], cx
mov dword [esp + 4], str.TEMP
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x407fa0
lea eax, [esp + 0x8e0]
mov dword [esp + 4], 0x4170ac
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x408000
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.PROGRAM_BASE
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x407f70
lea eax, [esp + 0x8e0]
mov dword [esp + 4], 0x4170f4
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x408248
lea eax, [esp + 0x8e0]
mov dword [esp + 4], 0x417100
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x4081a8
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.CACHE_DIR
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x408078
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.COMPANY
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x40832f
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.PRODUCT
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x408381
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.VERSION
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
je 0x408153
lea eax, [esp + 0x8e0]
mov dword [esp + 4], str.TIME
mov dword [esp], eax
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x407f90
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.00401a60
cmp word [ebx], 0
je 0x4083f9
mov ecx, edi
mov edx, ebx
add edx, 2
sub ecx, 1
cmp word [edx], 0
jne 0x407e80
movzx eax, byte [esp + 0x4e0]
test al, al
je 0x407f3c
mov dword [esp + 0x28], ebx
add ecx, esi
mov dword [esp + 0x20], esi
mov esi, ecx
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x24], ebp
mov ebp, edx
lea esi, cs:[esi]
nop
mov byte [esp + 0x3e], al
lea eax, [esp + 0x3e]
mov ebx, esi
mov dword [esp + 4], eax
lea eax, [esp + 0x44]
sub ebx, edi
mov dword [esp + 8], 2
mov dword [esp], eax
mov byte [esp + 0x3f], 0
call sub.msvcrt.dll_mbstowcs
cmp eax, 1
jne 0x415dc0
cmp word [ebp], 0
movzx ecx, word [esp + 0x44]
mov eax, ebp
je 0x407f0c
add eax, 2
sub ebx, 1
cmp word [eax], 0
jne 0x407f00
test ebx, ebx
je 0x415dc0
xor edx, edx
add edi, 1
mov word [eax], cx
add ebp, 2
mov word [eax + 2], dx
movzx eax, byte [edi]
test al, al
jne 0x407ec0
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
cmp word [ebx], 0
je 0x407f60
xor eax, eax
add ebx, 2
sub edi, 1
cmp word [ebx], 0
jne 0x407fc0
test al, al
jne 0x407feb
lea esi, cs:[esi]
lea esi, [esi]
xor edx, edx
jmp 0x407c76
mov dword [esp], ebx
call sub.msvcrt.dll_wcslen
mov ecx, edi
mov edx, str.PROGRAM
sub ecx, eax
mov eax, ebx
call fcn.00407c40
test al, al
jne 0x408110
add esp, 0x10ec
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 4], ebx
mov dword [esp], edi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
sub esp, 8
cmp word [ebx], 0
je 0x407feb
mov eax, 1
lea esi, cs:[esi]
add ebx, 2
sub edi, 1
cmp word [ebx], 0
jne 0x407fc0
test al, al
je 0x407f60
jmp 0x407feb
sub ebx, 2
xor esi, esi
add edi, 1
mov word [ebx], si
cmp word [ebx - 2], 0x5c
je 0x407fe0
xor edx, edx
jmp 0x407c76
mov eax, dword [sym.imp.msvcrt.dll___wargv]
cmp word [ebx], 0
mov edx, edi
mov eax, dword [eax]
mov esi, dword [eax]
mov eax, ebx
je 0x408054
lea esi, cs:[esi]
lea esi, cs:[esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
je 0x408054
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x408020
jmp 0x408054
test edx, edx
je 0x415dc0
mov word [eax], cx
add eax, 2
add esi, 2
sub edx, 1
movzx ecx, word [esi]
test cx, cx
jne 0x408040
xor edx, edx
mov word [eax], dx
cmp word [ebx], 0
je 0x407f60
xor eax, eax
jmp 0x407f3e
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
jne 0x407f90
cmp word [ebx], 0
mov edx, edi
mov eax, ebx
je 0x4080cc
lea esi, [esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x4080c0
movzx ecx, word [esp + 0x2d8]
test cx, cx
je 0x4080fc
lea esi, [esi]
test edx, edx
je 0x415dc0
add esi, 2
mov word [eax], cx
add eax, 2
sub edx, 1
movzx ecx, word [esi]
test cx, cx
jne 0x4080e0
xor ecx, ecx
mov word [eax], cx
cmp word [ebx], 0
jne 0x407fb6
jmp 0x407feb
mov dword [esp], ebx
call sub.msvcrt.dll_wcslen
cmp eax, 3
jbe 0x408061
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 0x408061
xor eax, eax
mov word [esi], ax
cmp word [ebx], 0
je 0x407f60
xor eax, eax
jmp 0x407f3e
cmp word [ebx], 0
mov edx, edi
mov eax, ebx
je 0x40816c
lea esi, [esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x408160
mov esi, 0x31
mov ecx, str.1.0.0
lea esi, cs:[esi]
nop
test edx, edx
je 0x415dc0
add ecx, 2
mov word [eax], si
add eax, 2
sub edx, 1
movzx esi, word [ecx]
test si, si
jne 0x408180
jmp 0x40805c
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 0x407f90
cmp word [ebx], 0
mov edx, edi
mov eax, ebx
je 0x4081fc
lea esi, [esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x4081f0
movzx ecx, word [esp + 0xd0]
test cx, cx
je 0x4080fc
lea esi, cs:[esi]
lea esi, cs:[esi]
lea esi, [esi]
test edx, edx
je 0x415dc0
add esi, 2
mov word [eax], cx
add eax, 2
sub edx, 1
movzx ecx, word [esi]
test cx, cx
jne 0x408220
jmp 0x4080fc
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
lea esi, [esp + 0x50]
mov dword [esp + 8], 0x4170fc
mov dword [esp + 0xc], eax
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], esi
call fcn.00401a60
cmp word [ebx], 0
je 0x4083e1
mov ecx, edi
mov edx, ebx
lea esi, [esi]
add edx, 2
sub ecx, 1
cmp word [edx], 0
jne 0x408280
movzx eax, byte [esp + 0x50]
test al, al
je 0x407f3c
mov dword [esp + 0x28], ebx
add ecx, esi
mov dword [esp + 0x20], esi
mov esi, ecx
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x24], ebp
mov ebp, edx
lea esi, cs:[esi]
lea esi, cs:[esi]
mov byte [esp + 0x3c], al
lea eax, [esp + 0x3c]
mov ebx, esi
mov dword [esp + 4], eax
lea eax, [esp + 0x40]
sub ebx, edi
mov dword [esp + 8], 2
mov dword [esp], eax
mov byte [esp + 0x3d], 0
call sub.msvcrt.dll_mbstowcs
cmp eax, 1
jne 0x415dc0
cmp word [ebp], 0
movzx ecx, word [esp + 0x40]
mov eax, ebp
je 0x40830c
add eax, 2
sub ebx, 1
cmp word [eax], 0
jne 0x408300
test ebx, ebx
je 0x415dc0
xor ebx, ebx
add edi, 1
mov word [eax], cx
add ebp, 2
mov word [eax + 2], bx
movzx eax, byte [edi]
test al, al
jne 0x4082c0
jmp 0x407f2a
cmp word [ebx], 0
mov edx, edi
mov eax, ebx
je 0x40834c
lea esi, [esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x408340
mov esi, 0x42
mov ecx, str.Barsik_Barbosik
lea esi, cs:[esi]
nop
test edx, edx
je 0x415dc0
add ecx, 2
mov word [eax], si
add eax, 2
sub edx, 1
movzx esi, word [ecx]
test si, si
jne 0x408360
jmp 0x40805c
cmp word [ebx], 0
mov edx, edi
mov eax, ebx
je 0x40839c
lea esi, cs:[esi]
add eax, 2
sub edx, 1
cmp word [eax], 0
jne 0x408390
mov esi, 0x54
mov ecx, str.ToneMutant
jmp 0x4083c0
test edx, edx
je 0x415dc0
add ecx, 2
mov word [eax], si
add eax, 2
sub edx, 1
movzx esi, word [ecx]
test si, si
jne 0x4083c0
jmp 0x40805c
movzx eax, byte [esp + 0x50]
mov ecx, edi
mov edx, ebx
test al, al
jne 0x408299
xor edx, edx
jmp 0x407c76
movzx eax, byte [esp + 0x4e0]
mov ecx, edi
mov edx, ebx
test al, al
jne 0x407e9c
xor edx, edx
jmp 0x407c76
add esp, 0x2c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
call sub.msvcrt.dll_abort
or edi, 0xffffffff
jmp 0x40c185