Function at 0x4a951d
Capabilities:
Get common file path

Disassembly:
push ebx
push esi
add esp, 0xfffffe68
mov esi, edx
mov ebx, eax
mov eax, esi
call fcn.004042ac
xor eax, eax
mov al, bl
cmp eax, 7
ja case.default.0x4a93c4
jmp dword [eax*4 + 0x4a93cb]
push 0x191
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_GetWindowsDirectoryA
mov edx, esi
lea eax, [esp + 4]
call fcn.00409b44
mov eax, dword [esi]
call fcn.0040456c
mov edx, dword [esi]
cmp byte [edx + eax - 1], 0x5c
je case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96c4
call fcn.00404574
jmp case.default.0x4a93c4
push 0x191
lea eax, [esp + 8]
push eax
call sub.kernel32.dll_GetSystemDirectoryA
mov edx, esi
lea eax, [esp + 4]
call fcn.00409b44
mov eax, dword [esi]
call fcn.0040456c
mov edx, dword [esi]
cmp byte [edx + eax - 1], 0x5c
je case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96c4
call fcn.00404574
jmp case.default.0x4a93c4
push esp
push 0x26
mov eax, dword [0x651e6c]
mov eax, dword [eax]
mov eax, dword [eax + 0x30]
push eax
call sub.shell32.dll_SHGetSpecialFolderLocation
call fcn.00418348
test al, al
je 0x4a94ad
lea eax, [esp + 4]
push eax
mov eax, dword [esp + 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListA
test eax, eax
je 0x4a94a3
mov edx, esi
lea eax, [esp + 4]
call fcn.00409b44
mov eax, dword [esp]
call fcn.004076f0
jmp 0x4a94b9
mov eax, esi
mov edx, 0x4a96d0
call fcn.00404300
mov eax, dword [esi]
call fcn.0040456c
mov edx, dword [esi]
cmp byte [edx + eax - 1], 0x5c
je case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96c4
call fcn.00404574
jmp case.default.0x4a93c4
lea eax, [esp + 4]
push eax
push 0x191
call sub.kernel32.dll_GetTempPathA
mov edx, esi
lea eax, [esp + 4]
call fcn.00409b44
mov eax, dword [esi]
call fcn.0040456c
mov edx, dword [esi]
cmp byte [edx + eax - 1], 0x5c
je case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96c4
call fcn.00404574
jmp case.default.0x4a93c4
push esp
push 0
mov eax, dword [0x651e6c]
mov eax, dword [eax]
mov eax, dword [eax + 0x30]
push eax
call sub.shell32.dll_SHGetSpecialFolderLocation
call fcn.00418348
test al, al
je 0x4a95a6
lea eax, [esp + 4]
push eax
mov eax, dword [esp + 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListA
test eax, eax
je 0x4a9557
mov edx, esi
lea eax, [esp + 4]
call fcn.00409b44
mov eax, dword [esp]
call fcn.004076f0
mov eax, dword [esi]
call fcn.0040456c
test eax, eax
jle case.default.0x4a93c4
mov eax, dword [esi]
call fcn.0040456c
mov edx, dword [esi]
cmp byte [edx + eax - 1], 0x5c
je 0x4a958a
mov eax, esi
mov edx, 0x4a96c4
call fcn.00404574
mov eax, dword [esi]
cmp byte [eax], 0x45
jne case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96ec
call fcn.00404300
jmp case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96ec
call fcn.00404300
jmp case.default.0x4a93c4
push esp
push 5
mov eax, dword [0x651e6c]
mov eax, dword [eax]
mov eax, dword [eax + 0x30]
push eax
call sub.shell32.dll_SHGetSpecialFolderLocation
call fcn.00418348
test al, al
je 0x4a963d
lea eax, [esp + 4]
push eax
mov eax, dword [esp + 4]
push eax
call sub.shell32.dll_SHGetPathFromIDListA
test eax, eax
je 0x4a95f1
mov edx, esi
lea eax, [esp + 4]
call fcn.00409b44
mov eax, dword [esp]
call fcn.004076f0
mov eax, dword [esi]
call fcn.0040456c
test eax, eax
jle case.default.0x4a93c4
mov eax, dword [esi]
call fcn.0040456c
mov edx, dword [esi]
cmp byte [edx + eax - 1], 0x5c
je 0x4a9624
mov eax, esi
mov edx, 0x4a96c4
call fcn.00404574
mov eax, dword [esi]
cmp byte [eax], 0x45
jne case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96ec
call fcn.00404300
jmp case.default.0x4a93c4
mov eax, esi
mov edx, 0x4a96ec
call fcn.00404300
jmp case.default.0x4a93c4
mov edx, esi
mov eax, dword [0x653668]
call fcn.0040e8e4
mov eax, dword [esi]
call fcn.0040456c
test eax, eax
jle case.default.0x4a93c4
jmp 0x4a9679
mov eax, dword [esi]
call fcn.0040456c
mov edx, eax
mov eax, esi
mov ecx, 1
call fcn.0040480c
mov eax, dword [esi]
call fcn.0040456c
mov edx, dword [esi]
cmp byte [edx + eax - 1], 0x5c
jne 0x4a9664
jmp case.default.0x4a93c4
call fcn.004a828c
add al, 0xf7
sub al, 5
setb al
xor al, 1
sub al, 1
jb 0x4a96aa
jne case.default.0x4a93c4
mov edx, esi
mov al, 2
call fcn.004a93a4
jmp case.default.0x4a93c4
mov eax, esi
call fcn.004a92ac
add esp, 0x198
pop esi
pop ebx
ret