Function at 0x414fd0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x220
mov edi, edx
mov dword [ebp - 0x22c], ecx
mov bl, byte [ebp + 0xc]
mov eax, dword [0x542040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push str.shell32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x525504
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x415191
mov esi, eax
xor eax, eax
lea edi, [ebp - 0x21c]
mov dword [edi], eax
mov ecx, esi
call dword [0x53cee4]
push edi
xor eax, eax
push eax
push eax
mov edi, dword [ebp - 0x22c]
push edi
call esi
test eax, eax
setns cl
xor bl, 1
or bl, cl
jne 0x415057
mov ecx, esi
call dword [0x53cee4]
lea eax, [ebp - 0x21c]
push eax
push 0
push 0x8800
push edi
call esi
test eax, eax
js 0x415182
mov esi, dword [ebp - 0x21c]
test esi, esi
je 0x415249
push esi
call fcn.004a76c4
add esp, 4
cmp eax, 0x7ffffff8
jae 0x415250
mov ebx, eax
lea eax, [ebp - 0x228]
cmp ebx, 4
jbe 0x415186
mov edi, ebx
or edi, 3
inc edi
js 0x415244
lea eax, [edi + edi]
push eax
call fcn.0048d95d
add esp, 4
mov dword [ebp - 0x228], eax
or edi, 0x80000000
mov dword [ebp - 0x220], edi
mov dword [ebp - 0x224], ebx
lea edi, [eax + ebx*2]
cmp eax, esi
seta cl
cmp edi, esi
setbe dl
or dl, cl
je 0x41525b
test ebx, ebx
je 0x4150e8
add ebx, ebx
push ebx
push esi
push eax
call fcn.00491320
add esp, 0xc
mov word [edi], 0
movsx eax, byte [ebp - 0x21d]
test eax, eax
cmovs eax, dword [ebp - 0x224]
lea edi, [ebp - 0x228]
cmovs edi, dword [ebp - 0x228]
test eax, eax
js 0x415235
sete cl
test edi, edi
setne dl
or dl, cl
je 0x41522e
lea esi, [ebp - 0x218]
mov ecx, esi
push eax
push edi
call fcn.0046eb70
mov ecx, dword [ebp + 8]
push esi
call fcn.0046ece0
mov ecx, esi
call fcn.0046ec60
cmp byte [ebp - 0x21d], 0
jns 0x415158
push dword [ebp - 0x228]
call fcn.0048d98d
add esp, 4
mov bl, 1
mov eax, dword [ebp - 0x21c]
test eax, eax
je 0x41516b
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0048e2e5
mov eax, ebx
add esp, 0x220
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
jmp 0x41515a
mov byte [ebp - 0x21d], bl
jmp 0x4150c2
lea esi, [ebp - 0x216]
push 0x206
push 0xff
push esi
call fcn.004918a0
add esp, 0xc
mov word [esi - 2], 0
lea ecx, [ebp - 0x218]
xor esi, esi
push ecx
push esi
push esi
push edi
push esi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
sets cl
cmp eax, 0x80070057
setne dl
and dl, cl
and dl, bl
cmp dl, 1
jne 0x4151f0
or edi, 0xa000
lea eax, [ebp - 0x218]
push eax
push esi
push esi
push edi
push esi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
setns bl
js 0x41516b
lea edi, [ebp - 0x218]
push edi
call fcn.004a76c4
add esp, 4
lea esi, [ebp - 0x228]
mov ecx, esi
push eax
push edi
call fcn.0046eb70
mov ecx, dword [ebp + 8]
push esi
call fcn.0046ece0
mov ecx, esi
call fcn.0046ec60
jmp 0x41516b
push str....._third_partylibc_srcinclude_string_view:320:_assertion___len__0____s___nullptr_failed:_string_view::string_view__CharT___size_t_:_received_nullptr_n
jmp 0x41523a
push str....._third_partylibc_srcinclude_string_view:318:_assertion___len___static_cast_size_type__numeric_limits_difference_type_::max____failed:_string_view::string_view__CharT___size_t_:_length_does_not_fit_in_difference_type_n
push 0x524b41
call fcn.004bbec0
call fcn.004bb3a0
push str....._third_partylibc_srcinclude_string:973:_assertion___s___nullptr_failed:_basic_string_const_char__detected_nullptr_n
jmp 0x41523a
lea ecx, [ebp - 0x228]
call fcn.004bb270
push str....._third_partylibc_srcinclude__stringchar_traits.h:222:_assertion__std::__is_pointer_in_range___s1____s1____n____s2__failed:_char_traits::copy:_source_and_destination_ranges_overlap_n
jmp 0x41523a