Function at 0x40e030
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43e13a
mov eax, dword fs:[0]
push eax
sub esp, 0x4ec
mov eax, dword [0x457078]
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 ebx, ecx
mov dword [ebp - 0x438], ebx
mov dword [ebx], vtable.CLogger.0
lea edi, [ebx + 4]
mov eax, dword [0x45b82c]
mov dword [ebp - 0x434], ebx
test eax, eax
jne 0x40e088
mov ecx, edi
call fcn.0040a9e0
mov dword [edi], eax
push 1
lea ecx, [ebp - 0x4f8]
mov dword [ebp - 4], 0
call fcn.0040e8e0
mov byte [ebp - 4], 2
call fcn.0040e4f0
mov dword [0x45b878], eax
test eax, eax
je 0x40e40d
push 0x207
lea eax, [ebp - 0x427]
mov byte [ebp - 0x428], 0
push 0
push eax
call sub.MSVCR120.dll_memset
mov eax, dword [0x45b82c]
add esp, 0xc
test eax, eax
jne 0x40e0e5
lea ecx, [ebp - 0x42c]
call fcn.0040a9e0
mov dword [ebp - 0x42c], eax
push 0x208
lea eax, [ebp - 0x428]
mov byte [ebp - 4], 3
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x42c]
call fcn.0040a1e0
mov esi, dword [ebp - 0x42c]
xor ebx, ebx
test esi, esi
je 0x40e124
mov ebx, dword [esi - 0xc]
test ebx, ebx
je 0x40e129
dec ebx
test esi, esi
je 0x40e142
push 1
push 0x5c
push esi
call fcn.00413e10
add esp, 0xc
test eax, eax
je 0x40e142
sub eax, esi
jmp 0x40e145
or eax, 0xffffffff
sub ebx, eax
lea ecx, [ebp - 0x42c]
dec ebx
lea eax, [ebp - 0x430]
push ebx
push eax
call fcn.0040f890
mov ebx, eax
mov byte [ebp - 4], 4
cmp esi, dword [ebx]
je 0x40e188
lea ecx, [ebp - 0x42c]
call fcn.0040aa60
mov eax, dword [ebx]
test eax, eax
je 0x40e180
test byte [eax - 0xe], 8
jne 0x40e180
inc word [eax - 0x10]
mov esi, dword [ebx]
mov dword [ebp - 0x42c], esi
lea ecx, [ebp - 0x430]
mov byte [ebp - 4], 3
call fcn.0040aa60
xor eax, eax
test esi, esi
je 0x40e1a0
mov eax, dword [esi - 0xc]
test eax, eax
je 0x40e1a5
dec eax
test esi, esi
je 0x40e1db
push 1
add eax, 0xfffffffb
push eax
push str..exe
push esi
call fcn.00413cd0
add esp, 0x10
test eax, eax
je 0x40e1db
sub eax, esi
cmp eax, 0xffffffff
je 0x40e1db
push 0x448f8e
push 1
push eax
lea ecx, [ebp - 0x42c]
call fcn.0040d960
push str..log
lea ecx, [ebp - 0x42c]
call fcn.0040fa90
push 0x207
lea eax, [ebp - 0x21f]
mov byte [ebp - 0x220], 0
push 0
push eax
call sub.MSVCR120.dll_memset
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
push 0
push 0
push 0x1c
push 0
call dword [sym.imp.SHFOLDER.dll_SHGetFolderPathA]
test eax, eax
lea eax, [ebp - 0x220]
push eax
js 0x40e280
mov ecx, edi
call fcn.0040a1e0
mov ecx, dword [edi]
test ecx, ecx
je 0x40e25d
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x40e25d
dec eax
je 0x40e25d
xor eax, eax
test ecx, ecx
je 0x40e248
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x40e24d
dec eax
cmp byte [eax + ecx - 1], 0x5c
je 0x40e25d
push 0x5c
mov ecx, edi
call fcn.0040f780
push str.IntuitQuickBooksLog_
mov ecx, edi
call fcn.0040fa90
mov ecx, dword [edi]
call fcn.0040def0
lea eax, [ebp - 0x42c]
mov ecx, edi
push eax
call fcn.0040f9d0
jmp 0x40e2ae
push 0x208
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push dword [ebp - 0x42c]
lea eax, [ebp - 0x220]
push eax
push ecx
mov ecx, esp
push str._s_s
call fcn.00409a40
push edi
call fcn.00409b10
add esp, 0x10
push 0x40
push 0xa
push dword [edi]
lea ecx, [ebp - 0x4e0]
call fcn.0040f420
test eax, eax
lea ecx, [ebp - 0x4f8]
mov eax, dword [ebp - 0x4f8]
push 0
mov eax, dword [eax + 4]
jne 0x40e2e0
push 2
add ecx, eax
call dword [sym.imp.MSVCP120.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool_]
jmp 0x40e2ea
push 0
add ecx, eax
call dword [sym.imp.MSVCP120.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::clear_int__bool_]
cmp dword [ebp - 0x490], 0
je 0x40e3b5
push str.Logging:__s
lea ecx, [ebp - 0x430]
mov dword [0x45b878], 1
call fcn.00409a40
lea eax, [ebp - 0x428]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0x430]
call fcn.0040fa90
mov eax, dword [ebp - 0x430]
xor esi, esi
test eax, eax
je 0x40e336
mov esi, dword [eax - 0xc]
test esi, esi
je 0x40e33b
dec esi
test eax, eax
je 0x40e345
test byte [eax - 0xe], 4
jne 0x40e368
push 1
push 0
lea ecx, [ebp - 0x430]
call fcn.0040a6d0
mov eax, dword [ebp - 0x430]
test eax, eax
je 0x40e368
or byte [eax - 0xe], 4
mov eax, dword [ebp - 0x430]
push 0
push esi
push eax
lea ecx, [ebp - 0x4e8]
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::write_char_const___long_long___int64__]
lea ecx, [ebp - 0x4e8]
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::flush_void_]
lea ecx, [ebp - 0x4f8]
call fcn.0040e9c0
lea ecx, [ebp - 0x430]
mov byte [ebp - 4], 3
call fcn.0040aa60
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 2
call fcn.0040aa60
mov ebx, dword [ebp - 0x438]
jmp 0x40e40d
lea ecx, [ebp - 0x42c]
mov dword [0x45b878], 0
mov byte [ebp - 4], 2
call fcn.0040aa60
mov ebx, dword [ebp - 0x438]
jmp 0x40e40d
mov eax, dword [ebp - 0x4f8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_fstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_fstream_char__struct_std::char_traits_char__.0
mov ecx, dword [ebp - 0x4f8]
mov edx, dword [ecx + 4]
lea ecx, [edx - 0x78]
mov dword [ebp + edx - 0x4fc], ecx
lea ecx, [ebp - 0x4e0]
call fcn.0040ea40
lea ecx, [ebp - 0x4d8]
call dword [sym.imp.MSVCP120.dll_public_virtual:_void___thiscall_std::basic_iostream_char__struct_std::char_traits_char__::destructor_void_]
lea ecx, [ebp - 0x480]
call dword [sym.imp.MSVCP120.dll_public_virtual:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::destructor_void_]
mov eax, ebx
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.0043bfe6
mov esp, ebp
pop ebp
ret