Function at 0x428f6d
Capabilities:
Check if file exists
Create directory
Get common file path

Disassembly:
push 0x34
mov eax, 0x44de2f
call fcn.0044653a
lea ecx, [ebp - 0x24]
call fcn.0041b610
xor ebx, ebx
lea ecx, [ebp - 0x24]
mov dword [ebp - 4], ebx
mov eax, dword [0x456170]
cmp dword [eax - 0xc], ebx
jne 0x428fa3
call fcn.0042c98c
mov esi, eax
test esi, esi
jns 0x428fad
jmp 0x4292fb
push 0x456170
call fcn.004130ad
lea ecx, [ebp - 0x24]
call fcn.0042967e
test eax, eax
jne 0x428fc3
mov esi, 0x8007000e
jmp 0x4292fb
mov esi, dword [ebp - 0x24]
test esi, esi
jne 0x428fd4
mov esi, 0x80070057
jmp 0x4292fb
lea ecx, [ebp - 0x14]
call fcn.0041b610
lea ecx, [ebp - 0x10]
call fcn.0041b610
lea ecx, [ebp - 0x3c]
call fcn.0041b610
lea ecx, [ebp - 0x18]
call fcn.0041b610
lea ecx, [ebp - 0x20]
call fcn.0041b610
push esi
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 5
call fcn.004130fb
lea edx, [ebp - 0x14]
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x1c]
call fcn.00427fd4
mov byte [ebp - 4], 5
mov esi, eax
mov ecx, dword [ebp - 0x1c]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
test esi, esi
js 0x429053
mov ecx, dword [ebp - 0x14]
lea edx, [ebp - 0x40]
call fcn.0042c8a8
test eax, eax
js 0x429053
lea eax, [ebp - 0x18]
push eax
lea edx, [ebp - 0x40]
call fcn.0042c934
mov esi, eax
test esi, esi
jns 0x429063
jmp 0x4292c4
push 0x40f348
lea ecx, [ebp - 0x18]
call fcn.00413340
mov byte [ebp - 0x40], bl
mov edi, dword [ebp - 0x18]
test edi, edi
je 0x429247
push 0x40d934
lea ecx, [ebp - 0x28]
call fcn.004130fb
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 7
push eax
lea ecx, [ebp - 0x10]
call fcn.004130ad
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x28]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
lea eax, [ebp - 0x34]
push eax
push ebx
push ebx
push 0x4099bc
call dword [sym.imp.SHELL32.dll_SHGetKnownFolderPath]
mov esi, eax
test esi, esi
js 0x4292c4
push dword [ebp - 0x34]
lea ecx, [ebp - 0x30]
call fcn.004130fb
mov byte [ebp - 4], 8
push dword [ebp - 0x34]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
push edi
lea ecx, [ebp - 0x1c]
call fcn.004130fb
push 0x40f2c8
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 9
call fcn.004130fb
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x2c]
push dword [eax - 0xc]
push edi
push eax
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
jne 0x429138
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax - 0xc]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax - 0xc]
sub eax, ecx
push eax
push ecx
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00426f6d
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 0xb
push eax
lea ecx, [ebp - 0x1c]
call fcn.004130ad
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x28]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov esi, dword [ebp - 0x1c]
lea ecx, [ebp - 0x10]
mov edi, dword [ebp - 0x30]
push 0x104
call fcn.00414fc1
push esi
push edi
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x10]
call fcn.00424028
mov ecx, dword [ebp - 0x2c]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov ecx, dword [ebp - 0x1c]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x30]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov edi, dword [ebp - 0x10]
test edi, edi
je 0x429247
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x42920a
push edi
lea ecx, [ebp - 0x1c]
call fcn.004130fb
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0xc
call fcn.0042967e
mov ecx, dword [ebp - 0x1c]
test eax, eax
jne 0x4291c7
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov esi, 0x8007000e
jmp 0x4292c4
call fcn.00428148
mov esi, eax
test esi, esi
jne 0x4291f3
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x4291f3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4291f3
movzx esi, si
or esi, 0x80070000
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.0041b5ee
test esi, esi
js 0x4292c4
mov edx, dword [ebp - 0x10]
mov cl, byte [ebp - 0x40]
call fcn.0042930e
mov esi, eax
test esi, esi
jne 0x4292c4
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x20]
call fcn.004130ad
push 7
push 0x40f338
lea ecx, [ebp - 0x20]
call fcn.004270a8
mov edi, dword [ebp - 0x18]
mov bl, byte [ebp - 0x40]
mov esi, dword [ebp - 0x20]
test edi, edi
jne 0x42924e
mov esi, 0x80070057
jmp 0x4292c4
test esi, esi
je 0x429247
cmp dword [0x456210], 0
jne 0x429262
mov esi, 0x8000ffff
jmp 0x4292c4
call fcn.00427f60
test al, al
jne 0x42925b
sub esp, 0xc
test bl, bl
je 0x42927c
push esi
mov edx, edi
call fcn.00428df6
jmp 0x429285
mov edx, esi
mov ecx, edi
call fcn.00428d4a
push 0xffffffffffffffff
push dword [0x456174]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call fcn.004299f9
mov ecx, eax
call fcn.0042ac82
mov esi, eax
test esi, esi
js 0x4292c4
mov cl, 1
call fcn.00428ad1
mov esi, eax
test esi, esi
js 0x4292c4
push dword [0x456174]
mov byte [0x45602a], bl
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ecx, dword [ebp - 0x20]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov ecx, dword [ebp - 0x18]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov ecx, dword [ebp - 0x3c]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov ecx, dword [ebp - 0x14]
lea ecx, [ecx - 0x10]
call fcn.0041b5ee
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.0041b5ee
mov eax, esi
call fcn.00446503
ret