Function at 0x424771
Capabilities:
Get common file path

Disassembly:
push 0x428
mov eax, 0x46abc9
call fcn.00468ea6
xor esi, esi
mov edi, esi
mov dword [ebp - 0x430], edi
mov eax, dword [0x475014]
mov ebx, 0x100
cmp eax, 0x475014
je 0x4247b9
test dword [eax + 0x1c], ebx
je 0x4247b9
cmp byte [eax + 0x19], 4
jb 0x4247b9
push dword [eax + 0x14]
mov edx, 0x40a47c
push dword [eax + 0x10]
push 0xa
pop ecx
call fcn.00414ca8
lea ecx, [ebp - 0x428]
call dword [sym.imp.MFC42u.dll_CString::CString_3]
xor eax, eax
mov dword [ebp - 4], esi
push 0x206
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21a]
push esi
push eax
call sub.msvcrt.dll_memset
xor eax, eax
push 0x206
mov word [ebp - 0x424], ax
lea eax, [ebp - 0x422]
push esi
push eax
call sub.msvcrt.dll_memset
add esp, 0x18
mov byte [ebp - 4], 1
call dword [sym.imp.MFC42u.dll_AfxGetModuleState]
push 0x40a2a0
push 0x40a2b8
push 0x40a2cc
lea ecx, [ebp - 0x434]
push ecx
mov ecx, dword [eax + 4]
call dword [sym.imp.MFC42u.dll_CWinApp::GetProfileStringW]
push eax
lea ecx, [ebp - 0x428]
mov byte [ebp - 4], 2
call dword [0x478574]
lea ecx, [ebp - 0x434]
mov byte [ebp - 4], 1
call dword [sym.imp.MFC42u.dll_CString::CString]
push 0x104
push 5
lea edx, [ebp - 0x21c]
mov dword [ebp - 4], esi
pop ecx
call fcn.0041f2c4
test eax, eax
jne 0x4248b0
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov ecx, dword [0x475014]
cmp ecx, 0x475014
je 0x424a68
test dword [ecx + 0x1c], ebx
je 0x424a68
cmp byte [ecx + 0x19], 2
jb 0x424a68
push esi
push 0x40a32c
push dword [ecx + 0x14]
push dword [ecx + 0x10]
push 0xc
mov edx, 0x40a47c
pop ecx
call fcn.00414cf4
jmp 0x424a68
lea eax, [ebp - 0x21c]
mov byte [ebp - 4], 4
push eax
mov ecx, 0x476b40
call dword [0x4786b4]
mov eax, dword [ebp - 0x428]
cmp dword [eax - 8], esi
jle 0x4248d6
movzx ecx, word [eax]
jmp 0x4248d8
mov ecx, esi
push 0x5c
pop edx
cmp dx, cx
je 0x4248f2
push edx
mov ecx, 0x476b40
call dword [sym.imp.MFC42u.dll_CString::operator_2]
mov eax, dword [ebp - 0x428]
push eax
mov edx, 0x104
lea ecx, [ebp - 0x21c]
call fcn.0041b6c9
mov edx, eax
test edx, edx
jns 0x424954
mov ecx, edx
movzx esi, dx
and ecx, 0x1fff0000
cmp ecx, 0x70000
je 0x42491e
mov esi, edx
mov eax, dword [0x475014]
cmp eax, 0x475014
je 0x424a68
test dword [eax + 0x1c], ebx
je 0x424a68
cmp byte [eax + 0x19], 2
jb 0x424a68
push edx
push 0x40a36c
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0xd
jmp 0x4248a0
lea ecx, [ebp - 0x21c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, si
jne 0x42495d
sub ecx, edx
sar ecx, 1
push 0x5c
pop eax
cmp ax, word [ebp + ecx*2 - 0x21e]
jne 0x424992
lea ecx, [ecx*2 - 2]
cmp ecx, 0x208
jae 0x4249f4
xor eax, eax
mov word [ebp + ecx - 0x21c], ax
lea eax, [ebp - 0x21c]
mov ecx, 0x476b40
push eax
call dword [sym.imp.MFC42u.dll_CString::operator_1]
lea eax, [ebp - 0x424]
push eax
push 0x40a2a0
push esi
push esi
push 0x8005
push esi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathAndSubDirW]
mov ecx, eax
test ecx, ecx
js 0x424a02
push 0xe109
push 0x40a3a4
lea eax, [ebp - 0x424]
push eax
call dword [sym.imp.SHELL32.dll_SHSetLocalizedName]
test eax, eax
jns 0x4249fd
mov ecx, eax
and ecx, 0x1fff0000
cmp ecx, 0x70000
jne 0x4249f9
movzx esi, ax
jmp 0x424a68
call fcn.0046940e
mov esi, eax
jmp 0x424a68
xor edi, edi
inc edi
jmp 0x424a68
mov eax, ecx
and eax, 0x1fff0000
cmp eax, 0x70000
jne 0x424a15
movzx esi, cx
jmp 0x424a68
mov esi, ecx
jmp 0x424a68
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x428]
call dword [sym.imp.MFC42u.dll_CString::CString]
mov eax, edi
call fcn.00468de4
ret