Function at 0x4209dc
Capabilities:
Get common file path

Disassembly:
mov eax, 0x43156d
call fcn.0042f6e0
mov eax, 0x1014
call fcn.0042f700
mov al, byte [ebp + 0xb]
push ebx
push esi
xor ebx, ebx
push edi
push ebx
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x10], ebx
mov byte [ebp - 0x20], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
xor eax, eax
cmp word [0x43bbe4], bx
push 0x4b43ffff
push 0xaa09ffff
setne al
mov dword [ebp - 4], 1
mov dword [0x43bbec], eax
call fcn.004118a0
add word [0x43bbd8], ax
movsx eax, byte [0x43bbc9]
push eax
push 0x5337ffff
call fcn.00411856
add dword [0x43bbf0], eax
add esp, 0x10
lea eax, [ebp - 0x1020]
mov byte [ebp - 0x1020], bl
push ebx
push 0x24
push eax
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
movsx eax, word [0x43bbd4]
push dword [0x43bc04]
push eax
call fcn.004117d2
cmp byte [ebp - 0x1020], bl
pop ecx
pop ecx
mov byte [0x43bbcb], al
mov edi, 0x1000
jne 0x420ac2
mov esi, dword [0x435364]
mov al, byte [esi]
add al, 0x5f
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042f700
mov ecx, esp
lea eax, [ebp - 0x1020]
push edi
push eax
mov edx, esi
call fcn.0042b9bf
push eax
push 0x47
call fcn.00415e0d
pop ecx
call eax
mov eax, dword [0x43bbec]
mov ecx, eax
imul byte [0x43bbce]
and cx, word [0x43bbe0]
mov byte [0x43bbc9], al
add word [0x43bbe4], cx
cmp byte [ebp - 0x1020], bl
jne 0x420b1d
mov esi, dword [0x435368]
mov al, byte [esi]
add al, 0x5f
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042f700
mov ecx, esp
lea eax, [ebp - 0x1020]
push edi
push eax
mov edx, esi
call fcn.0042b9bf
push eax
push 0x47
call fcn.00415e0d
pop ecx
call eax
mov ax, word [0x43bc04]
add word [0x43bbe4], ax
cmp word [0x43bbe2], bx
jne 0x420b42
cmp dword [0x43bbe8], ebx
mov word [0x43bbe0], bx
je 0x420b4b
mov word [0x43bbe0], 1
cmp byte [ebp - 0x1020], bl
je 0x420b6a
lea eax, [ebp - 0x1020]
push eax
call sub.MSVCRT.dll_strlen
pop ecx
push eax
lea eax, [ebp - 0x1020]
push eax
jmp 0x420b95
mov esi, dword [0x43536c]
mov al, byte [esi]
add al, 0x5f
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042f700
mov ecx, esp
mov edx, esi
call fcn.0042b9bf
mov esi, eax
push esi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push esi
lea ecx, [ebp - 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov esi, dword [ebp + 8]
mov al, byte [ebp - 0x20]
push ebx
mov ecx, esi
mov byte [esi], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x20]
push ebx
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
pop eax
mov dword [ebp - 0x10], eax
push eax
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x102c]
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret