Function at 0x422c6f
Capabilities:
Get common file path

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
mov esi, ecx
mov dword [ebp - 0x10], 0x104
push 2
xor eax, eax
xor ecx, ecx
pop ebx
mov word [esi], ax
mov edi, ecx
push ebx
lea eax, [ebp - 0x10]
mov dword [ebp - 4], ecx
push eax
lea eax, [ebp - 4]
mov edx, 0x402f30
push eax
mov ecx, 0x402f58
call fcn.0044f0c7
cmp dword [ebp - 4], edi
je 0x422db7
push dword [ebp - 4]
mov edx, 0x102
mov ecx, esi
call fcn.00414563
push dword [ebp - 4]
mov edi, eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
test edi, edi
jns 0x422d10
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x422d09
test byte [eax + 0x1c], 1
je 0x422d09
cmp byte [eax + 0x19], bl
jb 0x422d09
push edi
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x11
mov edx, 0x4030f4
pop ecx
call fcn.00412c68
xor eax, eax
jmp 0x422db0
mov ecx, esi
xor edx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, ebx
cmp ax, dx
jne 0x422d17
sub ecx, edi
sar ecx, 1
cmp word [esi + ecx*2 - 2], 0x5c
je 0x422d73
push 0x402f68
mov edx, 0x104
mov ecx, esi
call fcn.0041d6eb
mov ecx, eax
test ecx, ecx
jns 0x422d73
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x422d09
test byte [eax + 0x1c], 1
je 0x422d09
cmp byte [eax + 0x19], bl
jb 0x422d09
push ecx
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x12
jmp 0x422cfe
mov eax, dword [0x46a020]
xor ebx, ebx
inc ebx
cmp eax, 0x46a020
je 0x422dae
test byte [eax + 0x1c], bl
je 0x422dae
cmp byte [eax + 0x19], 4
jb 0x422dae
push esi
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x13
mov edx, 0x4030f4
pop ecx
call fcn.0041d606
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
push 0x204
push esi
push 0x401b90
mov edx, 0x402f30
mov ecx, 0x402f58
call fcn.0044ef94
xor ecx, ecx
cmp word [esi], cx
je 0x422e90
mov ecx, esi
xor edi, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, ebx
cmp ax, di
jne 0x422de4
sub ecx, edx
sar ecx, 1
cmp word [esi + ecx*2 - 2], 0x5c
je 0x422e4f
push 0x402f68
mov edx, 0x104
mov ecx, esi
call fcn.0041d6eb
mov ecx, eax
test ecx, ecx
jns 0x422e4f
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x422d09
test byte [eax + 0x1c], 1
je 0x422d09
cmp byte [eax + 0x19], bl
jb 0x422d09
push ecx
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x14
jmp 0x422cfe
mov eax, dword [0x46a020]
xor ebx, ebx
inc ebx
cmp eax, 0x46a020
je 0x422dae
test byte [eax + 0x1c], bl
je 0x422dae
cmp byte [eax + 0x19], 4
jb 0x422dae
push esi
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x15
jmp 0x422da3
lea eax, [ebp - 8]
mov dword [ebp - 8], ecx
push eax
push 5
push ecx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
xor ebx, ebx
mov ecx, eax
inc ebx
test ecx, ecx
js 0x422edf
cmp dword [ebp - 8], edi
je 0x422edf
push esi
push dword [ebp - 8]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
mov edi, eax
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
js 0x422f17
mov ecx, dword [ebp - 0xc]
push dword [ebp - 8]
push ecx
mov edx, dword [ecx]
call dword [edx + 0x14]
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x422f17
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x422f5b
test byte [eax + 0x1c], bl
je 0x422f24
cmp byte [eax + 0x19], 2
jb 0x422f24
push ecx
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
mov edx, 0x4030f4
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x16
pop ecx
call fcn.00412c68
test edi, edi
jne 0x422faf
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x422f5b
test byte [eax + 0x1c], bl
je 0x422f5b
cmp byte [eax + 0x19], 2
jb 0x422f5b
push 0x402f70
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
mov edx, 0x4030f4
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x17
pop ecx
call fcn.0041d606
push esi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
jne 0x422faf
mov eax, dword [0x46a020]
cmp eax, 0x46a020
je 0x422d09
test byte [eax + 0x1c], bl
je 0x422d09
cmp byte [eax + 0x19], 2
jb 0x422d09
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x18
jmp 0x422cfe
mov ecx, esi
xor edi, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x422fb6
sub ecx, edx
sar ecx, 1
cmp ecx, ebx
jl 0x422dae
cmp word [esi + ecx*2 - 2], 0x5c
je 0x422dae
push 0x402f68
mov edx, 0x104
mov ecx, esi
call fcn.0041d6eb
test eax, eax
jns 0x422dae
mov ecx, dword [0x46a020]
cmp ecx, 0x46a020
je 0x422d09
test byte [ecx + 0x1c], bl
je 0x422d09
cmp byte [ecx + 0x19], 2
jb 0x422d09
push eax
push ecx
call fcn.00411040
pop ecx
push eax
mov eax, dword [0x46a020]
push dword [eax + 0x14]
push dword [eax + 0x10]
push 0x19
jmp 0x422cfe