Function at 0x420c45
Capabilities:
Get common file path

Disassembly:
push ebp
sub esp, 0x414
lea ebp, [esp - 4]
mov eax, dword [0x43bca0]
xor eax, ebp
mov dword [ebp + 0x414], eax
push 0x40
mov eax, 0x427b8c
call fcn.0042606e
mov esi, dword [ebp + 0x420]
xor edi, edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], edi
xor ebx, ebx
inc ebx
mov ecx, esi
mov dword [ebp - 4], ebx
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
push 0x104
lea eax, [ebp]
push edi
push eax
mov dword [ebp - 0x10], ebx
call sub.MSVCR80.dll_memset
mov al, byte [ebp + 0x444]
add esp, 0xc
neg al
push ebx
sbb eax, eax
and eax, 0xfffffff7
add eax, 0x23
push eax
lea eax, [ebp]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x420d21
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x30]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
lea ecx, [ebp + 0x428]
push ecx
push eax
lea eax, [ebp - 0x4c]
push eax
mov byte [ebp - 4], 2
call dword [sym.imp.MSVCP80.dll_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::operator_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__]
add esp, 0xc
push eax
mov ecx, esi
mov byte [ebp - 4], 3
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__]
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 2
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
push esi
call fcn.0042088a
test al, al
pop ecx
jne 0x420d1b
push esi
call fcn.00420987
pop ecx
jmp 0x420d1d
mov al, bl
test al, al
jne 0x420d91
push 0x208
lea eax, [ebp + 0x20a]
push edi
push eax
mov word [ebp + 0x208], di
call sub.MSVCR80.dll_memset
add esp, 0xc
push 0x20a
lea eax, [ebp + 0x208]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp + 0x208]
push 0x5c
push eax
call dword [sym.imp.MSVCR80.dll_wcsrchr]
cmp eax, edi
pop ecx
pop ecx
je 0x420d68
mov word [eax], di
lea eax, [ebp + 0x208]
push eax
lea ecx, [ebp - 0x30]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
push eax
mov ecx, esi
mov byte [ebp - 4], 4
call dword [0x42c5a0]
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [ebp + 0x428]
mov byte [ebp - 4], 0
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x414]
xor ecx, ebp
call fcn.00426052
add ebp, 0x418
leave
ret