Function at 0x427900
Capabilities:
Get common file path

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x45646c
push eax
mov al, byte [0x469ba8]
mov dword fs:[0], esp
sub esp, 0x424
test al, 1
push ebp
push esi
push edi
mov ebp, ecx
jne 0x42794b
mov dl, al
mov ecx, 0x469bc0
or dl, 1
mov byte [0x469ba8], dl
call fcn.00435810
push 0x404330
call fcn.0044055c
add esp, 4
push ebx
push 1
mov ecx, 0x469bc0
call fcn.00435ae0
mov eax, dword [ebp + 4]
mov ecx, dword [str.lF_F]
mov dword [0x4686ac], eax
mov dword [esp + 0x18], ecx
lea edx, [esp + 0x18]
xor edi, edi
push edx
mov ecx, ebp
mov dword [esp + 0x440], edi
call fcn.0042a860
mov eax, dword [esp + 0x18]
cmp dword [eax - 8], edi
jne 0x427d31
mov ecx, 0x468420
lea ebx, [ebp + 0x7c0]
test ecx, ecx
jne 0x42799f
xor eax, eax
jmp 0x4279aa
push 0x468420
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push 0x468420
push eax
mov ecx, ebx
call fcn.00404190
cmp dword [0x46896c], edi
jne 0x427dc6
mov word [esp + 0x22c], di
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x22e]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x26]
mov word [esp + 0x24], 0
rep stosd dword es:[edi], eax
lea edx, [esp + 0x22c]
push 0x104
push edx
stosw word es:[edi], ax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x427cb8
mov eax, dword [str.lF_F]
lea ecx, [esp + 0x22c]
test ecx, ecx
mov dword [esp + 0x10], eax
je 0x427a8c
lea edx, [esp + 0x22c]
shr edx, 0x10
jne 0x427a46
xor eax, eax
lea ecx, [esp + 0x22c]
mov ax, cx
lea ecx, [esp + 0x10]
push eax
call fcn.00403d60
jmp 0x427a8c
lea edx, [esp + 0x22c]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
test esi, esi
je 0x427a8c
push esi
lea ecx, [esp + 0x14]
call fcn.00404130
test eax, eax
je 0x427a8c
lea ecx, [esi + esi]
lea eax, [esi + esi + 2]
cmp eax, ecx
jb 0x427a8c
mov edi, dword [esp + 0x10]
mov edx, ecx
lea esi, [esp + 0x22c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0
push 0x5c
lea ecx, [esp + 0x18]
mov byte [esp + 0x444], 1
call fcn.0042b150
inc eax
lea ecx, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.00403530
mov esi, eax
mov eax, dword [esi]
mov ecx, dword [esp + 0x10]
cmp ecx, eax
mov byte [esp + 0x43c], 2
je 0x427b09
mov edx, dword [ecx - 0xc]
test edx, edx
jge 0x427ad9
mov edx, dword [0x46005c]
add ecx, 0xfffffff4
cmp ecx, edx
jne 0x427ae0
mov ecx, dword [eax - 0xc]
test ecx, ecx
jge 0x427af0
mov ecx, dword [eax - 8]
push eax
push ecx
lea ecx, [esp + 0x18]
call fcn.00404190
jmp 0x427b09
lea ecx, [esp + 0x10]
call fcn.00404250
mov esi, dword [esi]
mov dword [esp + 0x10], esi
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x14]
mov ecx, dword [0x46005c]
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov byte [esp + 0x43c], 1
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x427b42
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x427b42
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call fcn.00439890
add esp, 4
mov ecx, dword [esp + 0x10]
push str.360360Safe
lea edx, [esp + 0x28]
push ecx
push edx
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
test eax, eax
je 0x427c85
mov eax, dword [str.lF_F]
lea ecx, [esp + 0x24]
test ecx, ecx
mov dword [esp + 0x14], eax
je 0x427bc8
lea edx, [esp + 0x24]
shr edx, 0x10
jne 0x427b8e
xor eax, eax
lea ecx, [esp + 0x24]
mov ax, cx
lea ecx, [esp + 0x14]
push eax
call fcn.00403d60
jmp 0x427bc8
lea edx, [esp + 0x24]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
test esi, esi
je 0x427bc8
push esi
lea ecx, [esp + 0x18]
call fcn.00404130
test eax, eax
je 0x427bc8
lea eax, [esi + esi]
lea ecx, [esp + 0x24]
push eax
mov eax, dword [esp + 0x18]
lea edx, [esi + esi + 2]
push ecx
push edx
push eax
call fcn.00402fc0
add esp, 0x10
lea ecx, [esp + 0x14]
mov byte [esp + 0x43c], 3
push ecx
mov ecx, ebp
call fcn.0042a330
mov ecx, dword [0x46005c]
mov esi, eax
mov eax, dword [esp + 0x14]
mov byte [esp + 0x43c], 1
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x427c11
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x427c11
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call fcn.00439890
add esp, 4
xor eax, eax
cmp esi, eax
je 0x427c85
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x1c]
push ecx
push edx
mov ecx, ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
call fcn.0042a3b0
test eax, eax
je 0x427c85
mov eax, dword [esp + 0x20]
test eax, eax
jl 0x427c85
jg 0x427c48
cmp dword [esp + 0x1c], 0xc800000
jb 0x427c85
mov eax, dword [esp + 0x10]
mov edx, dword [0x46005c]
mov byte [esp + 0x43c], 0
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x427c7b
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x427c7b
mov edx, dword [esp + 0x10]
lea eax, [edx - 0xc]
push eax
call fcn.00439890
add esp, 4
lea eax, [esp + 0x24]
test eax, eax
jne 0x427cc6
jmp 0x427cd1
mov eax, dword [esp + 0x10]
mov edx, dword [0x46005c]
mov byte [esp + 0x43c], 0
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x427cb8
add eax, 0xfffffff4
push eax
call edi
test eax, eax
jg 0x427cb8
mov edx, dword [esp + 0x10]
lea eax, [edx - 0xc]
push eax
call fcn.00439890
add esp, 4
mov edx, dword [ebp]
push 1
push ebp
call dword [edx + 0xc]
jmp 0x427dc6
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea edx, [esp + 0x24]
mov ecx, ebx
push edx
push eax
call fcn.00404190
mov eax, dword [ebp]
push 0
push ebp
call dword [eax + 0xc]
mov ecx, 0x82
xor eax, eax
mov edi, 0x4686b0
rep stosd dword es:[edi], eax
mov eax, dword [ebx]
push eax
push 0x104
push 0x4686b0
call fcn.00427f00
test eax, eax
mov dword [ebp + 0x7c4], 1
jl 0x427dc6
mov ecx, dword [0x468494]
push 1
push 0x4686b0
push 0x3922
push ecx
jmp 0x427dc0
mov eax, dword [ebp]
push edi
push ebp
call dword [eax + 0xc]
mov eax, dword [ebp + 0x7c0]
mov ecx, dword [esp + 0x18]
lea esi, [ebp + 0x7c0]
cmp eax, ecx
je 0x427d89
cmp dword [eax - 0xc], edi
jge 0x427d5f
mov edx, dword [0x46005c]
add eax, 0xfffffff4
cmp eax, edx
jne 0x427d64
cmp dword [ecx - 0xc], edi
jge 0x427d72
push ecx
mov ecx, dword [ecx - 8]
push ecx
mov ecx, esi
call fcn.00404190
jmp 0x427d89
mov ecx, esi
call fcn.00404250
mov eax, dword [esp + 0x18]
mov dword [esi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, 0x82
xor eax, eax
mov edi, 0x4686b0
rep stosd dword es:[edi], eax
mov esi, dword [esi]
push esi
push 0x104
push 0x4686b0
call fcn.00427f00
test eax, eax
jl 0x427dc6
mov edx, dword [0x468494]
push 1
push 0x4686b0
push 0x3922
push edx
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, ebp
call fcn.00428020
mov eax, dword [0x46896c]
pop ebx
test eax, eax
jne 0x427e1f
mov eax, dword [ebp + 4]
lea esi, [ebp + 0x7c8]
push eax
mov ecx, esi
call fcn.004093e0
push esi
add esi, 8
push esi
push 0x468350
call fcn.00402e20
mov eax, dword [0x468358]
push 0
push 0x403230
push 0
push 0x118
push eax
call dword [sym.imp.USER32.dll_CreateDialogParamW]
mov ecx, dword [ebp + 0x7cc]
mov dword [0x4686a8], ecx
jmp 0x427e5b
mov edx, dword [ebp + 4]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
push 0x40e
push edx
call esi
mov edi, dword [sym.imp.USER32.dll_ShowWindow]
push 0
push eax
call edi
mov eax, dword [ebp + 4]
push 0x3f6
push eax
call esi
push 0
push eax
call edi
mov ecx, dword [ebp + 4]
push 0x3f7
push ecx
call esi
push 0
push eax
call edi
push 1
push 0x3b
push 0xaf
push 0xa7
push 0xb9
lea ecx, [ebp + 0xe4]
call fcn.0042abe0
push 1
push 0x14
push 0x5c
push 0x137
push 8
lea ecx, [ebp + 0x1ac]
call fcn.0042abe0
push 1
push 0x14
push 0x5c
push 0x138
push 0x66
lea ecx, [ebp + 0x53c]
call fcn.0042abe0
push 1
push 0x14
push 0x5c
push 0x137
push 0x1cc
lea ecx, [ebp + 0x474]
call fcn.0042abe0
lea ecx, [esp + 0x14]
mov dword [esp + 0x438], 0xffffffff
call fcn.00404100
mov ecx, dword [esp + 0x430]
pop edi
pop esi
mov eax, 1
pop ebp
mov dword fs:[0], ecx
add esp, 0x430
ret 8