Function at 0x418bb0
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x4305eb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x244
mov al, byte [esp + 0x37]
push ebx
push ebp
push esi
xor ebx, ebx
push edi
push ebx
lea ecx, [esp + 0x38]
mov dword [esp + 0x4c], ebx
mov byte [esp + 0x38], al
call fcn.0040aae0
mov edi, 0x43e7b0
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x38]
push ebp
call fcn.0040af60
test al, al
je 0x418c2b
mov edi, dword [esp + 0x38]
mov ecx, ebp
mov edx, ecx
mov esi, 0x43e7b0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x38]
call fcn.0040af40
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x4d]
mov byte [esp + 0x4c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [esp + 0x25c], ebx
stosb byte es:[edi], al
call fcn.00418b70
test eax, eax
je 0x419073
mov edi, str.RoamingAppData
or ecx, 0xffffffff
xor eax, eax
mov esi, dword [esp + 0x268]
repne scasb al, byte es:[edi]
mov eax, dword [esi + 8]
mov dword [esp + 0x20], ebx
not ecx
dec ecx
push ecx
push str.RoamingAppData
push eax
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x418ce0
mov eax, 0x3eb685db
mov word [esp + 0x14], 0x65f9
mov word [esp + 0x16], 0x4cf6
mov ecx, dword [esp + 0x14]
mov byte [esp + 0x18], 0xa0
mov byte [esp + 0x19], 0x3a
mov byte [esp + 0x1a], 0xe3
mov byte [esp + 0x1b], 0xef
mov edx, dword [esp + 0x18]
mov byte [esp + 0x1c], 0x65
mov byte [esp + 0x1d], 0x72
mov byte [esp + 0x1e], 0x9f
mov byte [esp + 0x1f], 0x3d
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], eax
jmp 0x418f59
mov edi, str.Desktop
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
mov ecx, dword [esi + 8]
push str.Desktop
push ecx
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x418d61
mov eax, 0xb4bfcc3a
mov word [esp + 0x14], 0xdb2c
mov word [esp + 0x16], 0x424c
mov edx, dword [esp + 0x14]
mov byte [esp + 0x18], 0xb0
mov byte [esp + 0x19], 0x29
mov byte [esp + 0x1a], 0x7f
mov byte [esp + 0x1b], 0xe9
mov byte [esp + 0x1c], 0x9a
mov byte [esp + 0x1d], 0x87
mov byte [esp + 0x1e], 0xc6
mov byte [esp + 0x1f], 0x41
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
jmp 0x418f59
mov edi, str.Documents
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esi + 8]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Documents
push edx
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x418dde
mov eax, 0xfdd39ad0
mov word [esp + 0x14], 0x238f
mov word [esp + 0x16], 0x46af
mov byte [esp + 0x18], 0xad
mov byte [esp + 0x19], 0xb4
mov byte [esp + 0x1a], 0x6c
mov byte [esp + 0x1b], 0x85
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x1c], 0x48
mov byte [esp + 0x1d], 3
mov byte [esp + 0x1e], 0x69
mov byte [esp + 0x1f], 0xc7
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
jmp 0x418f55
mov edi, str.Favorites
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [esi + 8]
not ecx
dec ecx
push ecx
push str.Favorites
push eax
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x418e5f
mov eax, 0x1777f761
mov word [esp + 0x14], 0x68ad
mov word [esp + 0x16], 0x4d8a
mov ecx, dword [esp + 0x14]
mov byte [esp + 0x18], 0x87
mov byte [esp + 0x19], 0xbd
mov byte [esp + 0x1a], 0x30
mov byte [esp + 0x1b], 0xb7
mov edx, dword [esp + 0x18]
mov byte [esp + 0x1c], 0x59
mov byte [esp + 0x1d], 0xfa
mov byte [esp + 0x1e], 0x33
mov byte [esp + 0x1f], 0xdd
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], eax
jmp 0x418f59
mov edi, str.LocalAppData
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
mov ecx, dword [esi + 8]
push str.LocalAppData
push ecx
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x418edd
mov eax, 0xf1b32785
mov word [esp + 0x14], 0x6fba
mov word [esp + 0x16], 0x4fcf
mov edx, dword [esp + 0x14]
mov byte [esp + 0x18], 0x9d
mov byte [esp + 0x19], 0x55
mov byte [esp + 0x1a], 0x7b
mov byte [esp + 0x1b], 0x8e
mov byte [esp + 0x1c], 0x7f
mov byte [esp + 0x1d], 0x15
mov byte [esp + 0x1e], 0x70
mov byte [esp + 0x1f], 0x91
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
jmp 0x418f59
mov edi, str.LocalAppDataLow
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esi + 8]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.LocalAppDataLow
push edx
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x418f59
mov eax, 0xa520a1a4
mov cl, 0x16
mov word [esp + 0x14], 0x1780
mov word [esp + 0x16], 0x4ff6
mov byte [esp + 0x18], 0xbd
mov byte [esp + 0x19], 0x18
mov byte [esp + 0x1a], cl
mov byte [esp + 0x1b], 0x73
mov byte [esp + 0x1f], cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x1c], 0x43
mov byte [esp + 0x1d], 0xc5
mov byte [esp + 0x1e], 0xaf
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
push str.shell32.dll
call dword [sym.imp.KERNEL32.DLL_LoadLibraryA]
push str.SHGetKnownFolderPath
push eax
mov dword [esp + 0x50], eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
cmp eax, ebx
je 0x419268
lea ecx, [esp + 0x20]
lea edx, [esp + 0x24]
push ecx
push ebx
push ebx
push edx
call eax
test eax, eax
jl 0x419268
mov eax, dword [esp + 0x20]
mov edi, dword [sym.imp.KERNEL32.DLL_WideCharToMultiByte]
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push eax
push ebx
push ebx
call edi
mov esi, eax
push esi
call fcn.00423f62
mov ebp, eax
add esp, 4
cmp ebp, ebx
je 0x419012
mov ecx, dword [esp + 0x20]
push ebx
push ebx
push esi
push ebp
push 0xffffffffffffffff
push ecx
push ebx
push ebx
call edi
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
lea ecx, [esp + 0x38]
push ebx
call fcn.0040af60
test al, al
je 0x419007
mov edi, dword [esp + 0x38]
mov ecx, ebx
mov edx, ecx
mov esi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x3c], ebx
mov byte [eax + ebx], 0
push ebp
call fcn.00420ca8
add esp, 4
jmp 0x419058
mov edi, 0x43e7b0
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x38]
push ebp
call fcn.0040af60
test al, al
je 0x419058
mov edi, dword [esp + 0x38]
mov ecx, ebp
mov edx, ecx
mov esi, 0x43e7b0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x3c], ebp
mov byte [eax + ebp], 0
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov edx, dword [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
jmp 0x419266
mov edi, str.RoamingAppData
or ecx, 0xffffffff
xor eax, eax
mov esi, dword [esp + 0x268]
repne scasb al, byte es:[edi]
mov eax, dword [esi + 8]
not ecx
dec ecx
push ecx
push str.RoamingAppData
push eax
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x4190b4
push 1
lea ecx, [esp + 0x50]
push 0x1a
push ecx
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
jmp 0x419222
mov edi, str.Desktop
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esi + 8]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Desktop
push edx
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x4190ed
push 1
lea eax, [esp + 0x50]
push ebx
push eax
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
jmp 0x419222
mov edi, str.Documents
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
mov ecx, dword [esi + 8]
push str.Documents
push ecx
push ebx
mov ecx, esi
call fcn.0040c0c0
test eax, eax
jne 0x419127
push 1
lea edx, [esp + 0x50]
push 0xc
push edx
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
jmp 0x419222
mov edi, str.Favorites
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esi + 8]
repne scasb al, byte es:[edi]
not ecx
mov eax, edx
dec ecx
cmp edx, eax
mov ebx, ecx
jae 0x419141
cmp eax, ebx
mov ecx, eax
jb 0x419149
mov ecx, ebx
mov esi, dword [esi + 4]
mov edi, str.Favorites
xor ebp, ebp
mov dword [esp + 0x20], esi
repe cmpsb byte [esi], byte es:[edi]
je 0x419160
sbb ebp, ebp
sbb ebp, 0xffffffff
test ebp, ebp
jne 0x41918b
cmp eax, ebx
jb 0x41918b
xor ecx, ecx
cmp eax, ebx
setne cl
mov ebp, ecx
test ebp, ebp
jne 0x41918b
push 1
push 6
lea edx, [esp + 0x54]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
jmp 0x419222
mov edi, str.LocalAppData
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
mov eax, edx
dec ecx
cmp edx, eax
mov ebx, ecx
jae 0x4191a2
cmp eax, ebx
mov ecx, eax
jb 0x4191aa
mov ecx, ebx
mov esi, dword [esp + 0x20]
mov edi, str.LocalAppData
xor ebp, ebp
repe cmpsb byte [esi], byte es:[edi]
je 0x4191be
sbb ebp, ebp
sbb ebp, 0xffffffff
test ebp, ebp
jne 0x4191d9
cmp eax, ebx
jb 0x4191d9
xor ecx, ecx
cmp eax, ebx
setne cl
mov ebp, ecx
test ebp, ebp
jne 0x4191d9
push 1
push 0x1c
jmp 0x419179
mov edi, str.LocalAppDataLow
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
mov ecx, edx
cmp edx, ebp
jb 0x4191f2
mov ecx, ebp
mov esi, dword [esp + 0x20]
mov edi, str.LocalAppDataLow
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x419206
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x419222
cmp edx, ebp
jb 0x419222
cmp edx, ebp
setne al
test eax, eax
jne 0x419222
mov ecx, 0x41
lea edi, [esp + 0x4c]
rep stosd dword es:[edi], eax
lea edi, [esp + 0x4c]
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x38]
push ebp
call fcn.0040af60
test al, al
je 0x419266
mov edi, dword [esp + 0x38]
mov ecx, ebp
mov eax, ecx
lea esi, [esp + 0x4c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x3c], ebp
mov byte [ecx + ebp], 0
xor ebx, ebx
cmp dword [esp + 0x3c], ebx
jg 0x4192db
lea edx, [esp + 0x150]
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x150]
push edx
push 0x104
rep stosd dword es:[edi], eax
call dword [sym.imp.KERNEL32.DLL_GetTempPathA]
lea edi, [esp + 0x150]
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x38]
push ebp
call fcn.0040af60
test al, al
je 0x4192db
mov edi, dword [esp + 0x38]
mov ecx, ebp
mov eax, ecx
lea esi, [esp + 0x150]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x3c], ebp
mov byte [ecx + ebp], 0
mov esi, dword [esp + 0x264]
mov dl, byte [esp + 0x34]
lea ecx, [esp + 0x34]
mov byte [esi], dl
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
mov eax, dword [0x4313b0]
push eax
push ebx
push ecx
mov ecx, esi
call fcn.0040a8e0
mov ecx, dword [esp + 0x38]
cmp ecx, ebx
je 0x419328
mov al, byte [ecx - 1]
test al, al
je 0x41931e
cmp al, 0xff
je 0x41931e
dec al
mov byte [ecx - 1], al
jmp 0x419328
dec ecx
push ecx
call fcn.00420ca8
add esp, 4
mov ecx, dword [esp + 0x254]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x250
ret