Function at 0x556620
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x57adb9
mov eax, dword fs:[0]
push eax
sub esp, 0x2c4
mov eax, dword [0x5d52e0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
xor edi, edi
mov dword [ebp - 4], edi
mov edx, dword [0x5dd9c0]
mov ebx, ecx
mov ecx, dword [0x5dd9c4]
push ecx
mov dword [ebp - 0x2a0], eax
push edx
lea eax, [ebp - 0x294]
push eax
push 0x5dd9c0
mov dword [ebp - 0x29c], ebx
mov dword [ebp - 0x28c], edi
mov dword [0x5dda10], edi
call fcn.00403890
push 0x80
mov ecx, 0x5dd9c0
call fcn.00403220
mov ecx, dword [0x5dd9e4]
mov edx, dword [0x5dd9e0]
push ecx
push edx
lea eax, [ebp - 0x294]
push eax
push 0x5dd9e0
call fcn.00404480
push 0x80
mov ecx, 0x5dd9e0
call fcn.00403bc0
mov edx, 0xcea
cmp esi, 0x1faf
je 0x5566e1
mov edx, esi
xor eax, eax
cmp ebx, 0x9fbf1
jne 0x5566f0
mov eax, 1
mov ecx, dword [0x5dd534]
cmp ecx, edi
je 0x55670a
push edx
mov edx, dword [eax*4 + 0x5dd9a0]
push 0x10007
push edx
call ecx
xor eax, eax
cmp ebx, 0x9fbf1
jne 0x556719
mov eax, 1
mov ecx, dword [0x5dd530]
cmp ecx, edi
jne 0x556727
xor eax, eax
jmp 0x556736
mov eax, dword [eax*4 + 0x5dd9a0]
push 0x50020
push eax
call ecx
cmp eax, 0xff1
setne cl
xor eax, eax
mov byte [ebp - 0x298], cl
cmp ebx, 0x9fbf1
jne 0x556753
mov eax, 1
mov ecx, dword [0x5dd540]
cmp ecx, edi
je 0x556772
mov edx, dword [0x5dda14]
mov eax, dword [eax*4 + 0x5dd9a0]
push edx
push eax
call ecx
test al, al
jne 0x55678d
push 0x5c77e8
lea ecx, [ebp - 0x2b0]
push ecx
mov dword [ebp - 0x2b0], 0x3bb
call fcn.005039bf
mov ecx, dword [0x5dda14]
mov edx, dword [ecx]
mov eax, dword [edx + 0x78]
call eax
movzx eax, ax
mov ecx, eax
mov dword [ebp - 0x294], ecx
mov ecx, dword [0x5dda14]
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
call eax
push eax
lea ecx, [ebp - 0x290]
call fcn.00401210
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x298]
mov eax, dword [ebp - 0x290]
push ecx
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x2a4], esp
mov esi, esp
push eax
call fcn.00401a10
lea edx, [ebp - 0x2ac]
add esp, 4
add eax, 0x10
push edx
mov dword [esi], eax
call fcn.00530a70
add esp, 0xc
xor eax, eax
mov byte [ebp - 4], 2
cmp ebx, 0x9fbf1
jne 0x55680b
mov eax, 1
mov ecx, dword [0x5dd530]
cmp ecx, edi
jne 0x556819
xor ecx, ecx
jmp 0x55682a
mov eax, dword [eax*4 + 0x5dd9a0]
push 0x6020000
push eax
call ecx
mov ecx, eax
push ebx
lea edi, [ebp - 0x288]
call fcn.00530ca0
add esp, 4
lea ecx, [ebp - 0x2a4]
push ecx
mov ecx, edi
mov byte [ebp - 4], 3
call fcn.0052c750
add esp, 4
push eax
mov ecx, edi
mov byte [ebp - 4], 4
call fcn.004015b0
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x2a4]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x556880
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
mov ecx, 0xa0009
lea edi, [ebp - 0x284]
call fcn.00530ca0
add esp, 4
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x284]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
push ecx
call ebx
test eax, eax
je 0x5568d1
mov edx, dword [ebp - 0x284]
push edx
call fcn.0052a9f0
add esp, 4
test al, al
je 0x5568d1
mov eax, dword [ebp - 0x284]
cmp dword [eax - 0xc], 0xae
jle 0x556a9a
call fcn.0040c84f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x5568eb
push 0x80004005
call fcn.004010a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x2a8], esi
mov byte [ebp - 4], 6
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, 0x104
or eax, ecx
jge 0x55692b
push 0x104
lea ecx, [ebp - 0x2a8]
call fcn.004019b0
mov esi, dword [ebp - 0x2a8]
push esi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov eax, dword [esi - 8]
push eax
push esi
call fcn.004ff818
add esp, 8
test eax, eax
js 0x556e59
cmp eax, dword [esi - 8]
jg 0x556e59
mov dword [esi - 0xc], eax
xor ecx, ecx
mov word [esi + eax*2], cx
mov edx, dword [ebp - 0x284]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x104
or eax, ecx
jge 0x55698e
push 0x104
lea ecx, [ebp - 0x284]
call fcn.004019b0
mov edx, dword [ebp - 0x284]
push 0x104
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
mov eax, dword [ebp - 0x284]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.004ff818
add esp, 8
test eax, eax
js 0x556e59
mov ecx, dword [ebp - 0x284]
cmp eax, dword [ecx - 8]
jg 0x556e59
mov dword [ecx - 0xc], eax
mov ecx, dword [ebp - 0x284]
xor edx, edx
mov word [ecx + eax*2], dx
mov edx, dword [ebp - 0x284]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x104
or eax, ecx
jge 0x556a04
push 0x104
lea ecx, [ebp - 0x284]
call fcn.004019b0
mov edx, dword [ebp - 0x284]
push edx
call dword [sym.imp.SHLWAPI.dll_PathRemoveBackslashW]
mov eax, dword [ebp - 0x284]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.004ff818
add esp, 8
test eax, eax
js 0x556e59
mov ecx, dword [ebp - 0x284]
cmp eax, dword [ecx - 8]
jg 0x556e59
mov dword [ecx - 0xc], eax
mov ecx, dword [ebp - 0x284]
xor edx, edx
mov word [ecx + eax*2], dx
xor eax, eax
cmp dword [ebp - 0x29c], 0x9fbf1
jne 0x556a55
lea eax, [edx + 1]
mov edi, dword [0x5dd53c]
test edi, edi
je 0x556a7a
mov ecx, dword [ebp - 0x284]
mov edx, dword [ecx - 0xc]
inc edx
push edx
mov edx, dword [eax*4 + 0x5dd9a0]
push ecx
push 0xa0009
push edx
call edi
lea eax, [esi - 0x10]
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x556a9a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp + 0xc]
cmp edi, 0xcf5
jne 0x556ae0
mov edi, dword [ebp - 0x29c]
push edi
xor esi, esi
call fcn.0054b770
add esp, 4
test eax, eax
jns 0x556d14
mov eax, 0x98400
push 0x5c77e8
lea ecx, [ebp - 0x2b4]
push ecx
mov dword [ebp - 0x28c], eax
mov dword [ebp - 0x2b4], eax
call fcn.005039bf
mov edx, dword [ebp - 0x288]
mov ecx, dword [ebp - 0x2ac]
mov eax, dword [edx - 0xc]
mov ecx, dword [ecx - 0xc]
lea eax, [eax + ecx + 0xd]
cmp eax, 0x104
jle 0x556b1f
mov eax, 0x97902
push 0x5c77e8
lea edx, [ebp - 0x2c8]
push edx
mov dword [ebp - 0x28c], eax
mov dword [ebp - 0x2c8], eax
call fcn.005039bf
push edx
call ebx
test eax, eax
jne 0x556b48
mov eax, 0x97201
mov dword [ebp - 0x28c], eax
mov dword [ebp - 0x2c4], eax
push 0x5c77e8
lea eax, [ebp - 0x2c4]
push eax
call fcn.005039bf
mov ecx, dword [ebp - 0x288]
push ecx
call fcn.0052a9f0
add esp, 4
test al, al
jne 0x556b7d
mov eax, 0x9f402
push 0x5c77e8
lea edx, [ebp - 0x2bc]
push edx
mov dword [ebp - 0x28c], eax
mov dword [ebp - 0x2bc], eax
call fcn.005039bf
mov edx, dword [ebp - 0x284]
xor ecx, ecx
mov eax, 0xff1
cmp word [ebp - 0x294], ax
setne cl
sub esp, 8
dec ecx
and ecx, 0xfffff400
add ecx, 0x1000
mov dword [ebp - 0x294], ecx
fild dword [ebp - 0x294]
fstp qword [esp]
push edx
call fcn.0052a960
add esp, 0xc
test al, al
jne 0x556bfa
mov eax, dword [ebp - 0x2a0]
push eax
mov ecx, 0x9e900
call fcn.00564a20
mov ecx, 2
add esp, 4
cmp eax, ecx
jne 0x556bfa
mov dword [ebp - 0x28c], ecx
mov dword [ebp - 0x2b8], ecx
push 0x5c77e8
lea ecx, [ebp - 0x2b8]
push ecx
call fcn.005039bf
mov ebx, dword [ebp - 0x298]
push ebx
lea edx, [ebp - 0x288]
push edx
lea eax, [ebp - 0x294]
push eax
call fcn.00530b80
add esp, 0xc
push eax
lea ecx, [ebp - 0x288]
mov byte [ebp - 4], 7
call fcn.004015b0
lea ecx, [ebp - 0x294]
mov byte [ebp - 4], 5
call fcn.00404b10
mov eax, dword [ebp - 0x290]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x298], esp
mov esi, esp
push eax
call fcn.00401a10
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.0054e780
mov eax, dword [ebp - 0x290]
push ebx
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x298], esp
mov esi, esp
push eax
call fcn.00401a10
lea ecx, [ebp - 0x298]
add esp, 4
add eax, 0x10
push ecx
mov dword [esi], eax
call fcn.00530a70
add esp, 0xc
push eax
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 8
call fcn.004015b0
lea ecx, [ebp - 0x298]
mov byte [ebp - 4], 5
call fcn.00404b10
lea edx, [ebp - 0x290]
push edx
lea ecx, [ebp - 0x284]
call fcn.0052fa60
mov esi, eax
lea eax, [ebp - 0x290]
add esp, 4
push eax
lea ecx, [ebp - 0x288]
call fcn.0052fa60
add esp, 4
cmp esi, eax
jg 0x556cdc
mov esi, eax
cmp esi, 0x2710
jl 0x556d0e
cmp edi, 0x1faf
je 0x556d0e
mov eax, 0x97301
push 0x5c77e8
lea ecx, [ebp - 0x2c0]
push ecx
mov dword [ebp - 0x28c], eax
mov dword [ebp - 0x2c0], eax
call fcn.005039bf
mov edi, dword [ebp - 0x29c]
mov edx, dword [ebp - 0x2a0]
push edx
push edi
lea eax, [ebp - 0x280]
push eax
call fcn.00520a10
xor eax, eax
mov byte [ebp - 4], 9
cmp edi, 0x9fbf1
jne 0x556d3b
mov eax, 1
mov ecx, dword [0x5dd530]
test ecx, ecx
jne 0x556d49
xor eax, eax
jmp 0x556d58
mov edx, dword [eax*4 + 0x5dd9a0]
push 0x10015
push edx
call ecx
mov ecx, dword [ebp - 0xa0]
lea esi, [ebp - 0x280]
mov dword [ecx + 0x38], eax
call fcn.0051f8b0
mov ecx, esi
mov dword [ebp - 0xc0], 0x23ae
mov dword [ebp - 0x20], 0x556600
call fcn.0051fc00
mov ecx, esi
mov byte [ebp - 4], 5
call fcn.00520830
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x284]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x556db5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x288]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x556ddb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x2ac]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x556e01
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x290]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x556e27
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [0x5dda00], 0
mov eax, dword [ebp - 0x28c]
je 0x556e3b
mov eax, 2
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004ff57c
mov esp, ebp
pop ebp
ret 8
push 0x80070057
call fcn.004010a0
cmp dword [0x5dda00], 0
jne 0x556eb5
push 0x5dda00
call dword [0x5dd4a0]
cmp dword [0x5dda00], 0
jne 0x556eb5
mov ecx, dword [ebp - 0x29c]
push ecx
mov edx, 0x5dda00
call fcn.0054df30
cmp dword [0x5dda00], 0
jne 0x556eb5
mov eax, dword [ebp - 0x28c]
mov edx, eax
and edx, 0xff0000
cmp edx, 0x90000
jne 0x556eb5
mov dword [0x5dda00], eax
mov eax, dword [ebp - 0x2a0]
push eax
call fcn.0054fdc0
mov eax, 0x556e27
ret