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

Disassembly:
push ebp
sub esp, 0x104
lea ebp, [esp - 4]
mov eax, dword [0x4a521c]
xor eax, ebp
mov dword [ebp + 0x104], eax
push 0x30
mov eax, 0x476a6e
call fcn.00456a59
mov eax, dword [ebp + 0x110]
mov ebx, dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
mov dword [ebp - 0x24], eax
xor esi, esi
lea eax, [ebp]
push eax
push esi
push esi
push 0x23
push esi
mov dword [ebp - 4], esi
call ebx
test eax, eax
jl 0x41c6b6
call fcn.004344e4
push eax
lea ecx, [ebp - 0x18]
call fcn.0040350c
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 1
call fcn.00403a4b
push 0x483e6c
push 3
pop edi
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.Jh0jMDI5Oy4tOxkeLj4nHyEGTAuExkOOhNSXytbXgcjDVowPB1XVw
call fcn.004023b3
lea eax, [ebp - 0x20]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 2
call fcn.0040764b
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
mov byte [ebp - 4], 1
call fcn.00401264
mov esi, dword [ebp - 0x18]
push esi
push 2
push 2
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.Izs8OiEdMy06EgE6LSgBXC0rPycrHTM6Ph1XVw
call fcn.004023b3
lea eax, [ebp - 0x20]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
mov ecx, dword [ebp - 0x24]
mov byte [ebp - 4], 3
call fcn.0040764b
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401264
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0
call fcn.00401264
xor esi, esi
jmp 0x41c6b9
push 3
pop edi
lea eax, [ebp]
push eax
push esi
push esi
push 0x26
push esi
call ebx
test eax, eax
jl 0x41c733
call fcn.004344e4
push eax
lea ecx, [ebp - 0x18]
call fcn.0040350c
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 4
call fcn.00403a4b
mov esi, dword [ebp - 0x18]
push esi
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IDsjDSkQI18nE14EL1sFLCETGUUmOS8OPR0ZHiUJxgmAAFdLjkZDj0BLwArKzM6IS4GDz8DJzk9Bh0YKAIBPiUDAggnAB0OPFsJVw
call fcn.004023b3
lea eax, [ebp - 0x20]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
mov ecx, dword [ebp - 0x24]
mov byte [ebp - 4], 5
call fcn.0040764b
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401264
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0
call fcn.00401264
xor esi, esi
lea eax, [ebp]
push eax
push esi
push esi
push 0x1c
push esi
call ebx
test eax, eax
jl 0x41c8d9
call fcn.004344e4
push eax
lea ecx, [ebp - 0x18]
call fcn.0040350c
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 6
call fcn.00403a4b
push esi
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.JgInBCEQXj4tOxkeK1teByMNWjAoEw1dKzkzBSsQJxkjAFM5PB1XVw
call fcn.004023b3
lea eax, [ebp - 0x20]
push eax
call fcn.00403d07
mov ecx, dword [ebp - 0x24]
add esp, 0x28
push dword [eax]
call fcn.00403616
mov ecx, dword [ebp - 0x20]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401264
test bl, bl
je 0x41c843
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IxJbCCkTXl8rOAUYOgZeKzo4WwsgKTMrMhABHyU5Uw86OyMYKDlSDj0dUlwlECcNOihbMjwdV1c
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
mov byte [ebp - 4], 7
push 4
push 4
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IzgnMC4DUjsjWi8EIjsBLCA4WhwoEy8YPRAjUiI8DjI
call fcn.004023b3
lea eax, [ebp - 0x20]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 8
call fcn.0040764b
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401264
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov byte [ebp - 4], 6
call fcn.00401264
push dword [ebp - 0x18]
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.JgJaACAAXj4tOxkeK1teByMNWjAoEw1dKzkzBSsQJxkjAFM5PB1XVw
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
add esp, 0x28
mov byte [ebp - 4], 9
jmp 0x41c8ad
push 0
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IDsgCy0pCRotPy9TKAMnJCANWkUhOTMOPQE_DSsTGQE6OysYIhNSDiZaLw0vAwklJjsnRSU5GV4yBh0YKAIBPiUDAggnAB0OPFsJVw
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
mov ecx, dword [ebp - 0x24]
add esp, 0x28
push dword [eax]
call fcn.00403616
mov ecx, dword [ebp - 0x14]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401264
test bl, bl
je 0x41c8c2
push dword [ebp - 0x18]
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.Jg1aMC0uXj4tOxkeK1teByMNWjAoEw1dKzkzBSs8IDI
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
add esp, 0x28
mov byte [ebp - 4], 0xa
push dword [eax]
mov ecx, dword [ebp - 0x24]
call fcn.0040764b
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401264
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.00401264
mov ebx, dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
xor esi, esi
lea eax, [ebp]
push eax
push esi
push esi
push 0x1a
push esi
call ebx
test eax, eax
jl 0x41c94f
call fcn.004344e4
push eax
lea ecx, [ebp - 0x18]
call fcn.0040350c
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0xb
call fcn.00403a4b
mov esi, dword [ebp - 0x18]
push esi
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IxInHC4uXj4tOxkeK1teByMNWg8lDVdX
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
mov ecx, dword [ebp - 0x24]
mov byte [ebp - 4], 0xc
call fcn.0040764b
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401264
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0
call fcn.00401264
push 2
push 2
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.KzsGOjoDUgQlAVJX
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
mov eax, dword [eax]
mov ecx, dword [ebp - 0x24]
mov ecx, dword [ecx]
add esp, 0x28
push eax
push ecx
call fcn.004587f2
pop ecx
pop ecx
mov ecx, dword [ebp - 0x14]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401264
test bl, bl
je 0x41c9f1
lea eax, [ebp - 0x18]
push eax
call fcn.004234f5
pop ecx
push dword [ebp - 0x18]
mov byte [ebp - 4], 0xd
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IysoDy4TXjsjEF5cPQNSCSETGVIpOSwILTsrBy8THg4gA14oPwMjUi4AI1c
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
mov ecx, dword [ebp - 0x24]
mov byte [ebp - 4], 0xe
call fcn.0040764b
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401264
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.00401264
push 2
push 2
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.ITtTOiYpHVwtKz8nKx0zOj4dV1c
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
mov eax, dword [eax]
mov ecx, dword [ebp - 0x24]
mov ecx, dword [ecx]
add esp, 0x28
push eax
push ecx
call fcn.004587f2
pop ecx
pop ecx
mov ecx, dword [ebp - 0x14]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401264
test bl, bl
je 0x41cbe9
call fcn.004344e4
push eax
lea ecx, [ebp - 0x1c]
call fcn.0040350c
lea eax, [ebp]
push eax
xor edi, edi
push edi
push edi
push 0x1a
push edi
mov byte [ebp - 4], 0xf
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jl 0x41cbde
call fcn.004344e4
push eax
lea ecx, [ebp - 0x18]
call fcn.0040350c
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0x10
call fcn.00403a4b
push 4
pop esi
push esi
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x14], esp
push str.IAJbCygpGR89AxkEIj4ZLCA5ATAiEy8YPQIrDSsQGR8jAAYPIgMsCCMdOwImDVorOjkBRSE5Xl8iOFICLx0BDyANIwAhLloYPFsJVw
call fcn.004023b3
lea eax, [ebp - 0x14]
push eax
call fcn.00403d07
add esp, 0x28
mov eax, dword [eax]
push dword [eax - 0xc]
lea ecx, [ebp - 0x18]
push eax
mov byte [ebp - 4], 0x11
call fcn.0040388a
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x10
call fcn.00401264
lea ecx, [ebp - 0x3c]
call fcn.00441619
push edi
push esi
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x14], esp
push str.IDsnMCEpKxoyAT8CITwgDiM8GSUnDVdX
mov byte [ebp - 4], 0x12
call fcn.004023b3
lea eax, [ebp - 0x20]
push eax
call fcn.00403d07
add esp, 0x28
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
mov byte [ebp - 4], 0x13
call fcn.004039f4
add esp, 0xc
push dword [eax]
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x14
call fcn.004416ae
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov esi, eax
call fcn.00401264
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x12
call fcn.00401264
cmp esi, edi
je 0x41cb8b
lea ecx, [ebp - 0x3c]
call fcn.0044131d
mov esi, eax
mov eax, dword [ebp - 0x3c]
push 0x10
lea ecx, [ebp - 0x3c]
call dword [eax + 0x38]
cmp eax, edi
je 0x41cb35
lea ecx, [ebp - 0x3c]
call fcn.004415de
cmp eax, edi
jne 0x41cb35
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x3c]
call fcn.004418e8
mov eax, dword [eax]
push dword [eax - 0xc]
lea ecx, [ebp - 0x18]
push eax
mov byte [ebp - 4], 0x15
call fcn.0040388a
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x12
call fcn.00401264
mov esi, dword [ebp - 0x18]
push esi
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x14], esp
push str.Iy4GDyU5XjstPFJFKw1aJCANWkUjAydBKw0NGiUJAwmPlJFLjlSOSs5Pw0vAxkZJRABAD8DXisjWwlX
call fcn.004023b3
lea eax, [ebp - 0x20]
push eax
call fcn.00403d07
add esp, 0x28
push dword [eax]
mov ecx, dword [ebp - 0x24]
mov byte [ebp - 4], 0x16
call fcn.0040764b
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401264
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x10
call fcn.0044163f
lea ecx, [esi - 0x10]
call fcn.00401264
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00401264
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x104]
xor ecx, ebp
call fcn.00456a17
add ebp, 0x108
leave
ret