Function at 0x4360d2
Capabilities:
Check if file exists
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf9c
mov eax, dword [0x58569c]
xor eax, ebp
mov dword [ebp - 4], eax
and dword [ebp - 0xf8c], 0
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov dword [ebp - 0xf98], ebx
test ebx, ebx
jne 0x43610d
xor al, al
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004fe191
leave
ret
push ebx
lea esi, [ebp - 0xedc]
call fcn.0040204f
mov eax, esi
push eax
lea eax, [ebp - 0xef8]
call fcn.0044a559
push 1
xor edi, edi
call fcn.004021a4
push ebx
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x43614c
push 1
xor edi, edi
lea esi, [ebp - 0xef8]
call fcn.004021a4
jmp 0x4360fc
push 8
pop ecx
push 0xb
mov esi, str.ProgramFilesDir
lea edi, [ebp - 0x24]
rep movsd dword es:[edi], dword [esi]
pop ecx
mov esi, str.ProgramFilesDir__x86_
lea edi, [ebp - 0x50]
xor eax, eax
rep movsd dword es:[edi], dword [esi]
mov ebx, 0x206
push ebx
mov word [ebp - 0xe88], ax
xor edi, edi
lea eax, [ebp - 0xe86]
push edi
push eax
call fcn.00506540
add esp, 0xc
xor eax, eax
push ebx
mov word [ebp - 0xc80], ax
lea eax, [ebp - 0xc7e]
push edi
push eax
call fcn.00506540
add esp, 0xc
xor eax, eax
push ebx
mov word [ebp - 0x258], ax
lea eax, [ebp - 0x256]
push edi
push eax
call fcn.00506540
add esp, 0xc
push 7
pop eax
mov dword [ebp - 0xf00], eax
mov dword [ebp - 0xf38], eax
xor eax, eax
xor ecx, ecx
mov dword [ebp - 0xf04], edi
mov word [ebp - 0xf14], cx
mov dword [ebp - 0xf3c], edi
mov word [ebp - 0xf4c], ax
cmp byte [ebp + 0xc], al
je 0x4367cd
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push edi
push 0x24
lea eax, [ebp - 0xe88]
push eax
push edi
call esi
push edi
push 8
lea eax, [ebp - 0xc80]
push eax
push edi
call esi
push edi
push 0x1a
lea eax, [ebp - 0x258]
push eax
push edi
call esi
lea esi, [ebp - 0xf94]
mov dword [ebp - 0xf94], edi
mov dword [ebp - 0xf90], edi
call fcn.0044effe
mov eax, esi
push eax
push 0x20119
push edi
push str.SOFTWAREMicrosoftWindowsCurrentVersion
push 0x80000002
call dword [0x52b010]
test eax, eax
jne 0x43627b
lea eax, [ebp - 0xf14]
push eax
mov eax, esi
push eax
lea ecx, [ebp - 0x24]
call fcn.0044f09d
lea eax, [ebp - 0xf4c]
push eax
mov eax, esi
push eax
lea ecx, [ebp - 0x50]
call fcn.0044f09d
call fcn.0044effe
lea eax, [ebp - 0x258]
push eax
lea esi, [ebp - 0xf68]
mov byte [ebp - 0xf85], 0
call fcn.0040204f
mov eax, esi
push eax
lea eax, [ebp - 0xec0]
call fcn.0044a559
push eax
lea ecx, [ebp - 0xef8]
call fcn.00436031
pop ecx
push 1
xor edi, edi
lea esi, [ebp - 0xec0]
mov byte [ebp - 0xf86], al
call fcn.004021a4
push 1
lea esi, [ebp - 0xf68]
call fcn.004021a4
cmp byte [ebp - 0xf86], 0
je 0x4362e1
mov byte [ebp - 0xf85], 1
lea eax, [ebp - 0x258]
push eax
lea esi, [ebp - 0xedc]
call fcn.0040204f
push 1
push 0x5448bc
or edx, 0xffffffff
mov ecx, esi
call fcn.0042eadc
push eax
mov eax, esi
push 0
push eax
lea esi, [ebp - 0xec0]
call fcn.00405746
push eax
lea eax, [ebp - 0xedc]
call fcn.00402a57
push 1
xor edi, edi
call fcn.004021a4
cmp dword [ebp - 0xec8], 8
mov eax, dword [ebp - 0xedc]
jae 0x43633f
lea eax, [ebp - 0xedc]
push eax
lea eax, [ebp - 0x258]
push eax
call dword [sym.imp.SHLWAPI.dll_StrCpyW]
lea eax, [ebp - 0xc80]
push eax
lea esi, [ebp - 0xea4]
call fcn.0040204f
and dword [ebp - 0xf20], edi
push 1
xor eax, eax
mov esi, 0x5448bc
push esi
lea ecx, [ebp - 0xea4]
mov dword [ebp - 0xf1c], 7
mov word [ebp - 0xf30], ax
call fcn.0040b42d
inc eax
push eax
push esi
lea eax, [ebp - 0xea4]
push eax
call fcn.00413963
inc eax
push eax
push esi
lea eax, [ebp - 0xea4]
push eax
call fcn.00413963
push eax
push 0
lea eax, [ebp - 0xea4]
push eax
lea esi, [ebp - 0xec0]
call fcn.00405746
push eax
lea eax, [ebp - 0xea4]
call fcn.00402a57
push 1
xor edi, edi
call fcn.004021a4
xor eax, eax
push ebx
push eax
mov word [ebp - 0xa78], ax
lea eax, [ebp - 0xa76]
push eax
call fcn.00506540
mov eax, dword [ebp - 0xea4]
add esp, 0xc
cmp dword [ebp - 0xe90], 8
jae 0x436402
lea eax, [ebp - 0xea4]
push eax
lea eax, [ebp - 0xa78]
push eax
call dword [sym.imp.SHLWAPI.dll_StrCpyW]
cmp byte [ebp - 0xf85], 0
jne 0x43645b
lea eax, [ebp - 0xa78]
push eax
lea esi, [ebp - 0xf68]
call fcn.0040204f
mov eax, esi
push eax
lea eax, [ebp - 0xec0]
mov dword [ebp - 0xf8c], 3
call fcn.0044a559
push eax
lea ecx, [ebp - 0xef8]
call fcn.00436031
pop ecx
mov byte [ebp - 0xf85], 1
test al, al
je 0x436462
mov byte [ebp - 0xf85], 0
test byte [ebp - 0xf8c], 2
je 0x436481
and dword [ebp - 0xf8c], 0xfffffffd
push 1
xor edi, edi
lea esi, [ebp - 0xec0]
call fcn.004021a4
test byte [ebp - 0xf8c], 1
je 0x4364a0
and dword [ebp - 0xf8c], 0xfffffffe
push 1
xor edi, edi
lea esi, [ebp - 0xf68]
call fcn.004021a4
cmp byte [ebp - 0xf85], 0
je 0x43650a
mov edi, dword [ebp - 0xf98]
call fcn.00435f79
test eax, eax
je 0x43650a
xor ebx, ebx
inc ebx
push ebx
xor edi, edi
lea esi, [ebp - 0xf30]
call fcn.004021a4
push ebx
lea esi, [ebp - 0xea4]
call fcn.004021a4
push ebx
lea esi, [ebp - 0xedc]
call fcn.004021a4
lea esi, [ebp - 0xf94]
call fcn.0044effe
push ebx
lea esi, [ebp - 0xf4c]
call fcn.004021a4
push ebx
lea esi, [ebp - 0xf14]
call fcn.004021a4
push ebx
jmp 0x43613d
xor eax, eax
push ebx
push eax
mov word [ebp - 0x870], ax
lea eax, [ebp - 0x86e]
push eax
call fcn.00506540
add esp, 0xc
push 1
push 0x5448bc
or edx, 0xffffffff
lea ecx, [ebp - 0xea4]
call fcn.0042eadc
mov ecx, dword [ebp - 0xe94]
dec ecx
mov dword [ebp - 0xf9c], eax
push ecx
inc eax
push eax
lea eax, [ebp - 0xea4]
push eax
lea esi, [ebp - 0xec0]
call fcn.00405746
push eax
lea eax, [ebp - 0xf30]
call fcn.00402a57
push 1
xor edi, edi
call fcn.004021a4
push dword [ebp - 0xf9c]
lea eax, [ebp - 0xea4]
push edi
push eax
lea esi, [ebp - 0xec0]
call fcn.00405746
push eax
lea eax, [ebp - 0xea4]
call fcn.00402a57
push 1
call fcn.004021a4
cmp dword [ebp - 0xe90], 8
mov eax, dword [ebp - 0xea4]
jae 0x4365b1
lea eax, [ebp - 0xea4]
mov esi, dword [sym.imp.SHLWAPI.dll_StrCpyW]
push eax
lea eax, [ebp - 0x870]
push eax
call esi
xor eax, eax
push ebx
push eax
mov word [ebp - 0x668], ax
lea eax, [ebp - 0x666]
push eax
call fcn.00506540
mov eax, dword [ebp - 0xf30]
add esp, 0xc
cmp dword [ebp - 0xf1c], 8
jae 0x4365f0
lea eax, [ebp - 0xf30]
push eax
lea eax, [ebp - 0x668]
push eax
call esi
cmp dword [ebp - 0xf04], edi
je 0x436633
or dword [ebp - 0xf8c], 4
lea eax, [ebp - 0xf14]
push eax
lea eax, [ebp - 0xec0]
call fcn.0044a559
push eax
lea ecx, [ebp - 0xef8]
call fcn.00436031
pop ecx
mov byte [ebp - 0xf85], 1
test al, al
jne 0x43663a
mov byte [ebp - 0xf85], 0
test byte [ebp - 0xf8c], 4
je 0x436659
and dword [ebp - 0xf8c], 0xfffffffb
push 1
xor edi, edi
lea esi, [ebp - 0xec0]
call fcn.004021a4
cmp byte [ebp - 0xf85], 0
jne 0x4364b8
cmp dword [ebp - 0xf3c], 0
je 0x4366a0
or dword [ebp - 0xf8c], 8
lea eax, [ebp - 0xf4c]
push eax
lea eax, [ebp - 0xec0]
call fcn.0044a559
push eax
lea ecx, [ebp - 0xef8]
call fcn.00436031
pop ecx
mov byte [ebp - 0xf85], 1
test al, al
jne 0x4366a7
mov byte [ebp - 0xf85], 0
test byte [ebp - 0xf8c], 8
je 0x4366bf
push 1
xor edi, edi
lea esi, [ebp - 0xec0]
call fcn.004021a4
cmp byte [ebp - 0xf85], 0
jne 0x4364b8
lea eax, [ebp - 0xe88]
push eax
lea esi, [ebp - 0xf68]
call fcn.0040204f
mov eax, esi
push eax
lea eax, [ebp - 0xec0]
call fcn.0044a559
push eax
lea ecx, [ebp - 0xef8]
call fcn.00436031
pop ecx
push 1
xor edi, edi
lea esi, [ebp - 0xec0]
mov byte [ebp - 0xf86], al
call fcn.004021a4
push 1
lea esi, [ebp - 0xf68]
call fcn.004021a4
cmp byte [ebp - 0xf86], 0
jne 0x4364b8
lea eax, [ebp - 0x870]
push eax
lea esi, [ebp - 0xf68]
call fcn.0040204f
mov eax, esi
push eax
lea eax, [ebp - 0xec0]
call fcn.0044a559
push eax
lea ecx, [ebp - 0xef8]
call fcn.00436031
pop ecx
push 1
lea esi, [ebp - 0xec0]
mov byte [ebp - 0xf86], al
call fcn.004021a4
push 1
lea esi, [ebp - 0xf68]
call fcn.004021a4
cmp byte [ebp - 0xf86], 0
je 0x436799
lea eax, [ebp - 0x668]
push eax
push dword [ebp - 0xf98]
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
test eax, eax
je 0x4364b8
push 1
xor edi, edi
lea esi, [ebp - 0xf30]
call fcn.004021a4
push 1
lea esi, [ebp - 0xea4]
call fcn.004021a4
push 1
lea esi, [ebp - 0xedc]
call fcn.004021a4
lea esi, [ebp - 0xf94]
call fcn.0044effe
xor eax, eax
push ebx
mov word [ebp - 0x460], ax
lea eax, [ebp - 0x45e]
push edi
push eax
call fcn.00506540
mov eax, dword [ebp - 0xf98]
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x4367f0
sub eax, edx
sar eax, 1
cmp eax, 3
jbe 0x436818
call dword [0x52b13c]
push eax
push dword [ebp - 0xf98]
push 0x549dbc
jmp 0x43682a
call dword [0x52b13c]
push eax
push dword [ebp - 0xf98]
push str._s_d.tmp
push 0xffffffffffffffff
mov ebx, 0x104
lea eax, [ebp - 0x460]
push ebx
push eax
call fcn.004ff4db
mov esi, dword [0x52b288]
add esp, 0x18
lea eax, [ebp - 0x460]
push eax
call esi
push edi
push 0x4000080
push 2
push edi
push 4
push 0x40000000
lea eax, [ebp - 0x460]
push eax
call dword [0x52b160]
cmp eax, 0xffffffff
jne 0x436893
push 1
xor edi, edi
lea esi, [ebp - 0xf4c]
call fcn.004021a4
push 1
lea esi, [ebp - 0xf14]
call fcn.004021a4
jmp 0x43613b
push eax
call dword [0x52b17c]
lea eax, [ebp - 0x460]
push eax
call esi
lea eax, [ebp - 0x460]
push eax
lea esi, [ebp - 0xf84]
call fcn.0040204f
push 1
push 0x5448bc
xor eax, eax
mov ecx, esi
call fcn.0040b42d
cmp eax, 0xffffffff
jne 0x4368cc
xor eax, eax
push dword [ebp - 0xf74]
lea esi, [ebp - 0xec0]
push eax
lea eax, [ebp - 0xf84]
push eax
call fcn.00405746
push eax
lea eax, [ebp - 0xf84]
call fcn.00402a57
push 1
xor edi, edi
call fcn.004021a4
cmp dword [ebp - 0xf70], 8
mov eax, dword [ebp - 0xf84]
jae 0x43690f
lea eax, [ebp - 0xf84]
push eax
push str.LocalVirtualStore
lea eax, [ebp - 0x258]
push eax
push str._s_s_s
push 0xffffffffffffffff
push ebx
push eax
call fcn.004ff4db
add esp, 0x1c
lea eax, [ebp - 0x258]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x436985
mov byte [ebp - 0xf85], 0
xor ebx, ebx
inc ebx
push ebx
xor edi, edi
lea esi, [ebp - 0xf84]
call fcn.004021a4
push ebx
lea esi, [ebp - 0xf4c]
call fcn.004021a4
push ebx
lea esi, [ebp - 0xf14]
call fcn.004021a4
push ebx
lea esi, [ebp - 0xef8]
call fcn.004021a4
mov al, byte [ebp - 0xf85]
jmp 0x4360fe
mov byte [ebp - 0xf85], 1
jmp 0x436945