Function at 0x5588c0
Capabilities:
Get common file path

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x622c1c
push eax
mov dword fs:[0], esp
sub esp, 0x1d8
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
push edi
mov eax, dword [esi + 0x350]
test eax, eax
jle 0x558947
xor ebx, ebx
mov ecx, dword [esi + 0x34c]
mov edi, ebx
add edi, ecx
cmp dword [edi + 8], 0xffffffff
jne 0x558936
mov eax, dword [edi]
mov ecx, dword [esi + 0x2e8]
push 0
mov dword [eax + 0x2e8], ecx
mov ecx, dword [edi]
mov edx, dword [ecx]
call dword [edx + 0x1b0]
mov ecx, dword [edi]
mov edx, dword [esp + 0x200]
push edx
push 0
mov eax, dword [ecx]
push 0
call dword [eax + 0x168]
mov ecx, edi
call fcn.00558560
mov eax, dword [esi + 0x350]
inc ebp
add ebx, 0xb0
cmp ebp, eax
jl 0x5588ef
lea edi, [esi + 0x348]
push 0xffffffffffffffff
push 0
mov ecx, edi
call fcn.00564dc0
mov ebp, dword [esp + 0x1f8]
xor edx, edx
cmp ebp, edx
je 0x558dea
mov cl, byte [esi + 0x2dc]
mov bl, byte [esp + 0x1fc]
mov al, cl
xor al, bl
and al, 1
xor al, cl
test al, 1
mov byte [esi + 0x2dc], al
je 0x55898e
mov dword [esi + 0x2f0], edx
mov eax, dword [ebp + 4]
xor bl, bl
push eax
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 0x18], edx
call dword [sym.imp.USER32.dll_GetMenuItemCount]
push 0xffffffffffffffff
push 0
mov ecx, edi
mov dword [esp + 0x2c], eax
call fcn.00564dc0
mov eax, dword [esp + 0x24]
xor edi, edi
test eax, eax
jle 0x558ac1
mov ecx, dword [ebp + 4]
push edi
push ecx
call dword [sym.imp.USER32.dll_GetMenuItemID]
cmp eax, 0xe110
jb 0x5589f5
cmp eax, 0xe11f
ja 0x5589f5
mov eax, dword [esp + 0x18]
test eax, eax
jge 0x558ab4
mov edx, dword [esp + 0x14]
mov dword [esp + 0x18], edx
jmp 0x558ab4
lea ecx, [esp + 0x30]
call fcn.00554150
mov ecx, dword [esp + 0x200]
mov eax, dword [esi + 0x2e8]
push ecx
push edi
push ebp
push eax
lea ecx, [esp + 0x40]
mov dword [esp + 0x200], 0
mov dword [esp + 0xc4], eax
call fcn.00554db0
mov ecx, dword [esp + 0x38]
test ecx, ecx
sete al
test bl, bl
je 0x558a3b
test al, al
jne 0x558aa0
cmp ecx, 0xffffffff
mov bl, al
jne 0x558a83
mov edx, dword [ebp + 4]
push edi
push edx
call dword [sym.imp.USER32.dll_GetSubMenu]
push eax
call fcn.005debc1
mov edx, dword [esp + 0x30]
mov ecx, dword [esi + 0x2e8]
push dword [esp + 0x200]
mov dword [edx + 0x2e8], ecx
mov ecx, dword [esp + 0x34]
push 0
push eax
mov edx, dword [ecx]
call dword [edx + 0x168]
mov eax, dword [esp + 0x30]
mov dword [eax + 0x2f0], esi
mov eax, dword [esp + 0x200]
mov edx, dword [esi]
lea ecx, [esp + 0x30]
push eax
push ecx
push 0xffffffffffffffff
mov ecx, esi
call dword [edx + 0x1ec]
inc dword [esp + 0x14]
lea ecx, [esp + 0x30]
mov dword [esp + 0x1f0], 0xffffffff
call fcn.00554390
mov eax, dword [esp + 0x24]
inc edi
cmp edi, eax
jl 0x5589c3
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], 0
test eax, eax
jl 0x558de0
mov al, byte [esp + 0x200]
test al, al
jne 0x558de0
call fcn.005f45a4
mov eax, dword [eax + 4]
mov ebx, dword [eax + 0xa8]
test ebx, ebx
mov dword [esp + 0x2c], ebx
je 0x558de0
mov ebp, dword [ebx + 4]
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0xe0]
rep stosd dword es:[edi], eax
lea edx, [esp + 0xe0]
mov dword [esp + 0x28], ebp
push edx
push 0x104
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edi, [esp + 0xe0]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ebp, ebp
mov dword [esp + 0x24], ecx
jle 0x558de0
mov ebp, 1
push 0x6b3df8
lea ecx, [esp + 0x14]
call fcn.005dd21e
mov eax, dword [esp + 0x24]
push 1
lea ecx, [esp + 0xe4]
push eax
lea edx, [ebp - 1]
push ecx
lea eax, [esp + 0x1c]
push edx
push eax
mov ecx, ebx
mov dword [esp + 0x204], 1
call fcn.005e0289
test eax, eax
jne 0x558ba0
lea ecx, [esp + 0x10]
mov dword [esp + 0x1f0], 0xffffffff
call fcn.005dd1b0
jmp 0x558d6d
mov ecx, dword [esi + 0x2e8]
lea ebx, [ebp + 0xe10f]
push ebx
push ecx
mov ecx, 0x6c62b4
call fcn.00524d60
mov ecx, eax
call fcn.00523660
push eax
mov ecx, 0x6c62b4
call fcn.00524d60
mov ecx, eax
call fcn.005238c0
mov edi, eax
test edi, edi
jne 0x558c0c
mov edx, dword [esi + 0x2e8]
push ebx
push edx
mov ecx, 0x6c62b4
call fcn.00524d60
mov ecx, eax
call fcn.00523660
push eax
mov ecx, 0x6c62b4
call fcn.00524d60
mov ecx, eax
call fcn.00523870
mov edi, eax
test edi, edi
je 0x558dc8
cmp ebp, 0xa
jge 0x558c2a
mov eax, dword [esp + 0x10]
lea ecx, [edi + 0x14]
push eax
push ebp
push str._d__s
push ecx
call fcn.005d59a6
add esp, 0x10
jmp 0x558c5d
mov edx, dword [esp + 0x10]
mov eax, ebp
push edx
mov ecx, 0xa
cdq
idiv ecx
mov eax, 0x66666667
lea ecx, [edi + 0x14]
push edx
imul ebp
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
push str._d_d__s
push ecx
call fcn.005d59a6
add esp, 0x14
mov eax, dword [0x6abf00]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov ecx, 0x6c62b8
mov byte [esp + 0x1f0], 3
call fcn.00524c90
mov edx, dword [eax]
push 0
push 0
lea ecx, [esp + 0x24]
push 0x7534
push ecx
mov ecx, eax
call dword [edx + 0x48]
test al, al
jne 0x558ca3
push str.Recent_file__d
lea ecx, [esp + 0x20]
call fcn.005dd2ed
mov ecx, 0x6c62b8
call fcn.00524c90
mov edx, dword [eax]
push 0
push 0
lea ecx, [esp + 0x28]
push 0x7535
push ecx
mov ecx, eax
call dword [edx + 0x48]
test al, al
jne 0x558cd4
push str.Recent_file__d____s__
lea ecx, [esp + 0x24]
call fcn.005dd2ed
mov edx, dword [esp + 0x1c]
push ebp
lea eax, [edi + 0x18]
push edx
push eax
call fcn.005d59a6
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
add esp, 0xc
lea ebx, [edi + 0x1c]
push ecx
push ebp
push edx
push ebx
call fcn.005d59a6
add esp, 0x10
lea ecx, [edi + 0x20]
push ebx
call fcn.005dd29d
mov eax, dword [esp + 0x18]
mov edx, dword [esi]
push 0
push 0
lea ecx, [eax + ebp - 1]
push 0
lea eax, [ebp + 0xe10f]
push ecx
push eax
mov ecx, esi
call dword [edx + 0x144]
test eax, eax
je 0x558da6
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x20]
inc eax
mov byte [esp + 0x1f0], 2
mov dword [esp + 0x14], eax
call fcn.005dd1b0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x1f0], 1
call fcn.005dd1b0
lea ecx, [esp + 0x10]
mov dword [esp + 0x1f0], 0xffffffff
call fcn.005dd1b0
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
inc ebp
lea edx, [ebp - 1]
cmp edx, eax
jl 0x558b4b
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x558de0
mov ecx, dword [esp + 0x18]
mov edx, dword [esi]
push 0
push 0
add eax, ecx
push 0
push eax
push 0
mov ecx, esi
call dword [edx + 0x144]
test eax, eax
jne 0x558de0
xor al, al
jmp 0x558dec
lea ecx, [esp + 0x20]
mov byte [esp + 0x1f0], 2
call fcn.005dd1b0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x1f0], 1
call fcn.005dd1b0
lea ecx, [esp + 0x10]
mov dword [esp + 0x1f0], 0xffffffff
call fcn.005dd1b0
xor al, al
jmp 0x558dec
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x1cc]
mov al, 1
mov ecx, dword [esp + 0x1e8]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1e4
ret 0xc