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

Disassembly:
push ebp
sub esp, 0x104
lea ebp, [esp - 4]
mov eax, dword [0x4a321c]
xor eax, ebp
mov dword [ebp + 0x104], eax
push 0x2c
mov eax, 0x47484d
call fcn.00454819
mov ebx, dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
mov edi, dword [ebp + 0x110]
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 0x41bd89
call fcn.004322ac
push eax
lea ecx, [ebp - 0x18]
call fcn.00405926
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 1
call fcn.004039e4
push 0x482134
push 3
push 3
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.OzABMCEIRisiCDcINRkrIzwLM108Jic5Ixo3HDUxAR8_MB1dJgVPTw
call fcn.0040238c
lea eax, [ebp - 0x20]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 2
call fcn.00407110
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
mov byte [ebp - 4], 1
call fcn.00401268
mov esi, dword [ebp - 0x18]
push esi
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.PQonHD82J0A4QjNEOyM3OzwjAjY0GEoVNSMzRzU3Ozs9NztBIAgnQCEYARs_CkIFPyYoOSMmQjkwJx1FMCYGNiIhMzA1NgUKOTY3GjUnAiI
call fcn.0040238c
lea eax, [ebp - 0x20]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 3
call fcn.00407110
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401268
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0
call fcn.00401268
xor esi, esi
lea eax, [ebp]
push eax
push esi
push esi
push 0x26
push esi
call ebx
test eax, eax
jl 0x41be02
call fcn.004322ac
push eax
lea ecx, [ebp - 0x18]
call fcn.00405926
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 4
call fcn.004039e4
mov esi, dword [ebp - 0x18]
push esi
push 3
push 3
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.OxgjFz8hIz49CD9EOzERCDwFAjkjGCc5IBsdCDgwNCI
call fcn.0040238c
lea eax, [ebp - 0x20]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 5
call fcn.00407110
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401268
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0
call fcn.00401268
xor esi, esi
lea eax, [ebp]
push eax
push esi
push esi
push 0x1c
push esi
call ebx
test eax, eax
jl 0x41bfa9
call fcn.004322ac
push eax
lea ecx, [ebp - 0x18]
call fcn.00405926
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 6
call fcn.004039e4
push esi
push 2
pop esi
push esi
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.ORgkKj8FOzE8Gj81NwhGFjcgPxciGkI0JAVPTw
call fcn.0040238c
lea eax, [ebp - 0x20]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov ecx, edi
call fcn.004035d2
mov ecx, dword [ebp - 0x20]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401268
test bl, bl
je 0x41bf15
push 4
push 4
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IiMVGDk2ATswIx0VOhoeNz0IKyA6CEITNRgnQjU2Pys4GTg5JgVPTw
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov byte [ebp - 4], 7
push 5
pop esi
push esi
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IiMBXTcIBR8hGAFEOwsWNz0FHUE3NgUVNScnQjgVJ0I_ChUcOggzHCELO08
call fcn.0040238c
lea eax, [ebp - 0x20]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 8
call fcn.00407110
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401268
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov byte [ebp - 4], 6
call fcn.00401268
push dword [ebp - 0x18]
push esi
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.IiEzMDAmSh80JzMIOBs_NDwjAjY0GEoKOQgzCjUIATQ9GyAxIRgVEzxCJ0U_MEIzOwsrMCMxNxA6JydDNCYBOTsYK0E1NgUKOTY3GjUnAiI
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
add esp, 0x28
mov byte [ebp - 4], 9
jmp 0x41bf7e
push 0
push 3
push 3
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.Pyc7ADQhIzsiCDcINTEBHz8wHV0lJh0VPAsrRDoaNCI
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov ecx, edi
call fcn.004035d2
mov ecx, dword [ebp - 0x14]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401268
test bl, bl
je 0x41bf92
push dword [ebp - 0x18]
push esi
push esi
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.MTYoKj8FOzE8Gj81NwhGFjcgPxckBU9P
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
add esp, 0x28
mov byte [ebp - 4], 0xa
push dword [eax]
mov ecx, edi
call fcn.00407110
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401268
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.00401268
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 0x41c020
call fcn.004322ac
push eax
lea ecx, [ebp - 0x18]
call fcn.00405926
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0xb
call fcn.004039e4
mov esi, dword [ebp - 0x18]
push esi
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.Oxs_MDM2FR8hGkobIxg_Ez8jAjY0GEoKOQgzCjUIATQ9GyAxIRgVEzlCM0oxCitHOBUkIiYFT08
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 0xc
call fcn.00407110
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401268
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0
call fcn.00401268
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.OxUnMDE2BUAwJgFGMTE_NDwjAjY8JgUfP0I7QjU3O0c7MAEIOggzHCELO08
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x28
push eax
push ecx
call fcn.004565b2
pop ecx
pop ecx
mov ecx, dword [ebp - 0x14]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401268
test bl, bl
je 0x41c0be
lea eax, [ebp - 0x18]
push eax
call fcn.004219bd
pop ecx
push dword [ebp - 0x18]
mov byte [ebp - 4], 0xd
push 4
push 4
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.PQUdFjU2ET48ChFBOzcCOT8mERY3NhUIODE7HzAnSyI
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 0xe
call fcn.00407110
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401268
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.00401268
push 3
push 3
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x1c], esp
push str.Igg_XT0bIzs7QjtFNCY_JTw2MzA0CCA2NydKTw
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x28
push eax
push ecx
call fcn.004565b2
pop ecx
pop ecx
mov ecx, dword [ebp - 0x14]
cmp eax, 0xffffffff
setg bl
add ecx, 0xfffffff0
call fcn.00401268
test bl, bl
je 0x41c2b3
call fcn.004322ac
push eax
lea ecx, [ebp - 0x1c]
call fcn.00405926
lea eax, [ebp]
push eax
xor ebx, ebx
push ebx
push ebx
push 0x1a
push ebx
mov byte [ebp - 4], 0xf
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jl 0x41c2a8
call fcn.004322ac
push eax
lea ecx, [ebp - 0x18]
call fcn.00405926
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0x10
call fcn.004039e4
push 4
push 4
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x14], esp
push str.IjMBADM2P0AiCh0VOhk4Nz0FHRw7CEITMxgnRjU3KwA9BR0IMTZKBTwKBUs1CEolPzMVMDg2Sjk5QjtdPwgRAyI2PxwjJjM0JkJKTw
call fcn.0040238c
lea eax, [ebp - 0x14]
push eax
call fcn.00403ca0
add esp, 0x28
mov eax, dword [eax]
push dword [eax - 0xc]
lea ecx, [ebp - 0x18]
push eax
mov byte [ebp - 4], 0x11
call fcn.00403823
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x10
call fcn.00401268
lea ecx, [ebp - 0x38]
call fcn.0043f4e3
push ebx
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x14], esp
push str.PQonMDMxPxo8CwFEOyM3OTwjJ0E8GztAPwoZRTQnSyI
mov byte [ebp - 4], 0x12
call fcn.0040238c
lea eax, [ebp - 0x20]
push eax
call fcn.00403ca0
add esp, 0x28
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
mov byte [ebp - 4], 0x13
call fcn.0040398d
add esp, 0xc
push dword [eax]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x14
call fcn.0043f55b
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov esi, eax
call fcn.00401268
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x12
call fcn.00401268
cmp esi, ebx
je 0x41c256
lea ecx, [ebp - 0x38]
call fcn.0043f1e7
mov esi, eax
mov eax, dword [ebp - 0x38]
push 0x10
lea ecx, [ebp - 0x38]
call dword [eax + 0x38]
cmp eax, ebx
je 0x41c200
lea ecx, [ebp - 0x38]
call fcn.0043f4a8
cmp eax, ebx
jne 0x41c200
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x38]
call fcn.0043f795
mov eax, dword [eax]
push dword [eax - 0xc]
lea ecx, [ebp - 0x18]
push eax
mov byte [ebp - 4], 0x15
call fcn.00403823
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x12
call fcn.00401268
mov esi, dword [ebp - 0x18]
push esi
push 5
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [ebp - 0x14], esp
push str.OxszJCMmFUA0IQEFOBU0MTwjAjY9ITsFMyRCQTwZHUUiCCtBIBg3CjcnEUU_MzclPCErCDoxNz49QkpP
call fcn.0040238c
lea eax, [ebp - 0x20]
push eax
call fcn.00403ca0
add esp, 0x28
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 0x16
call fcn.00407110
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401268
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x10
call fcn.0043f509
lea ecx, [esi - 0x10]
call fcn.00401268
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00401268
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.004547d7
add ebp, 0x108
leave
ret