Function at 0x452394
Capabilities:
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xc
push 0
push 0
dec ecx
jne 0x45239c
push ecx
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x4528df
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x4528ba
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, ebx
sub eax, 2
jb 0x4523d3
je 0x4523ef
jmp 0x4524c4
lea edx, [ebp - 0x14]
xor eax, eax
call fcn.00402a38
lea eax, [ebp - 0x10]
mov edx, 0x4528f8
call fcn.0040453c
jmp 0x4524db
lea eax, [ebp - 0x10]
mov edx, 0x45290c
call fcn.0040453c
push 0x457e4c
push 0x26
push 0
call sub.shell32.dll_SHGetSpecialFolderLocation
call fcn.00406ea4
test eax, eax
je 0x452423
push 0x457e50
mov eax, dword [0x457e4c]
push eax
call sub.shell32.dll_SHGetPathFromIDListA
lea eax, [ebp - 0x18]
mov edx, 0x457e50
mov ecx, 0x105
call fcn.00404714
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 0x18]
call fcn.004082f0
cmp dword [ebp - 0x28], 0
je 0x45246c
mov eax, dword [ebp - 0x18]
call fcn.004088e8
test al, al
je 0x45246c
push dword [ebp - 0x18]
push 0x452918
push 0x452934
lea eax, [ebp - 0x14]
mov edx, 3
call fcn.00404824
mov eax, dword [ebp - 0x14]
call fcn.004088d8
test al, al
jne 0x452492
push 0x452944
lea eax, [ebp - 0x14]
push eax
mov edx, 0x452948
xor ecx, ecx
mov eax, 0x80000000
call fcn.0045225c
mov eax, dword [ebp - 0x14]
call fcn.004088d8
test al, al
jne 0x4524db
lea eax, [ebp - 0x14]
mov edx, 0x45296c
call fcn.0040453c
mov eax, dword [ebp - 0x14]
call fcn.004088d8
test al, al
jne 0x4524db
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4528c4
lea edx, [ebp - 0x14]
xor eax, eax
call fcn.00402a38
lea eax, [ebp - 0x10]
mov edx, 0x4528f8
call fcn.0040453c
push 0x4529a4
push dword [ebp - 0x14]
push 0x4529b0
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.00404824
mov dl, 1
mov eax, dword [0x4296b4]
call fcn.004297b4
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x4528a9
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 0x80000000
mov eax, dword [ebp - 8]
call fcn.00429854
lea eax, [ebp - 0x1c]
mov edx, 0x4529c0
call fcn.0040453c
lea eax, [ebp - 0x20]
mov edx, 0x4529d8
call fcn.0040453c
lea eax, [ebp - 0x24]
mov edx, 0x4529ec
call fcn.0040453c
sub ebx, 2
jb 0x452556
je 0x4527ab
jmp 0x452893
xor ecx, ecx
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x4525ce
mov ecx, dword [ebp - 0x10]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
lea eax, [ebp - 0x2c]
mov ecx, 0x452a04
mov edx, dword [ebp - 0x10]
call fcn.004047b0
mov edx, dword [ebp - 0x2c]
mov cl, 1
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x4525c6
push 0x4529a4
lea edx, [ebp - 0x34]
xor eax, eax
call fcn.00402a38
push dword [ebp - 0x34]
push 0x4529b0
lea eax, [ebp - 0x30]
mov edx, 3
call fcn.00404824
mov ecx, dword [ebp - 0x30]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x452646
mov ecx, dword [ebp - 0x10]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
lea eax, [ebp - 0x38]
mov ecx, 0x452a04
mov edx, dword [ebp - 0x10]
call fcn.004047b0
mov edx, dword [ebp - 0x38]
mov cl, 1
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x45263e
push 0x4529a4
lea edx, [ebp - 0x40]
xor eax, eax
call fcn.00402a38
push dword [ebp - 0x40]
push 0x4529b0
lea eax, [ebp - 0x3c]
mov edx, 3
call fcn.00404824
mov ecx, dword [ebp - 0x3c]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
xor ecx, ecx
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x4526be
mov ecx, dword [ebp - 0x10]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
lea eax, [ebp - 0x44]
mov ecx, 0x452a04
mov edx, dword [ebp - 0x10]
call fcn.004047b0
mov edx, dword [ebp - 0x44]
mov cl, 1
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x4526b6
push 0x4529a4
lea edx, [ebp - 0x4c]
xor eax, eax
call fcn.00402a38
push dword [ebp - 0x4c]
push 0x4529b0
lea eax, [ebp - 0x48]
mov edx, 3
call fcn.00404824
mov ecx, dword [ebp - 0x48]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
mov cl, 1
mov edx, 0x452a18
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x45270a
push 0x4529a4
lea edx, [ebp - 0x54]
xor eax, eax
call fcn.00402a38
push dword [ebp - 0x54]
push 0x4529b0
lea eax, [ebp - 0x50]
mov edx, 3
call fcn.00404824
mov ecx, dword [ebp - 0x50]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
mov cl, 1
mov edx, 0x452a3c
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x452756
push 0x4529a4
lea edx, [ebp - 0x5c]
xor eax, eax
call fcn.00402a38
push dword [ebp - 0x5c]
push 0x4529b0
lea eax, [ebp - 0x58]
mov edx, 3
call fcn.00404824
mov ecx, dword [ebp - 0x58]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
mov cl, 1
mov edx, 0x452a64
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x452893
push 0x4529a4
lea edx, [ebp - 0x64]
xor eax, eax
call fcn.00402a38
push dword [ebp - 0x64]
push 0x4529b0
lea eax, [ebp - 0x60]
mov edx, 3
call fcn.00404824
mov ecx, dword [ebp - 0x60]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
jmp 0x452893
xor ecx, ecx
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x4527d3
mov ecx, 0x452a88
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x4527f9
mov ecx, dword [ebp - 0x10]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
xor ecx, ecx
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x45281f
mov ecx, dword [ebp - 0x10]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
mov cl, 1
mov edx, 0x452a18
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x45283f
mov ecx, dword [ebp - 0xc]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
mov cl, 1
mov edx, 0x452a3c
mov eax, dword [ebp - 8]
call fcn.004298bc
mov ecx, dword [ebp - 0xc]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
mov cl, 1
mov edx, 0x452a64
mov eax, dword [ebp - 8]
call fcn.004298bc
test al, al
je 0x45288b
mov ecx, dword [ebp - 0xc]
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.00429c38
mov eax, dword [ebp - 8]
call fcn.00429824
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4528b0
mov eax, dword [ebp - 8]
call fcn.00403754
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4528e6
lea eax, [ebp - 0x64]
mov edx, 0x17
call fcn.004044c8
ret