Function at 0x405560
Capabilities:
Get common file path
Query or enumerate registry value

Disassembly:
push ebp
xor edx, edx
mov ecx, str.Recent_file_list
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0x698]
push ebx
sub esp, 0x6cc
call fcn.00404fd0
test eax, eax
je 0x405590
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi, eax
xor eax, eax
mov dword [ebp - 0x68e], 0x250026
lea esi, [ebp - 0x226]
mov word [ebp - 0x686], ax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x68a], 0x200064
mov dword [ebp - 0x678], 0x41db20
mov dword [ebp - 0x674], 0x41d900
mov dword [ebp - 0x670], 0x41d6e0
mov dword [ebp - 0x66c], 0x41d4c0
mov dword [ebp - 0x694], 0x208
mov dword [esp], eax
call dword [sym.imp.user32.dll_GetMenu]
mov dword [ebp - 0x644], esi
lea esi, [ebp - 0x636]
sub esp, 4
mov dword [ebp - 0x6a0], eax
mov dword [esp], eax
mov eax, dword [sym.imp.user32.dll_RemoveMenu]
mov dword [ebp - 0x668], 0x30
mov dword [ebp - 0x664], 0x162
mov dword [ebp - 0x660], 0
mov dword [ebp - 0x658], 0x3ed
mov dword [esp + 8], 0
mov dword [esp + 4], 0x3f1
mov dword [ebp - 0x6a8], eax
call eax
mov dword [ebp - 0x69c], edi
sub esp, 0xc
mov edi, dword [ebp - 0x69c]
lea eax, [ebp - 0x684]
mov dword [esp + 4], str.File_d
mov dword [esp], eax
mov ebx, edi
add edi, 1
mov dword [esp + 8], edi
add ebx, 0x3ed
mov dword [ebp - 0x69c], edi
call dword [sym.imp.user32.dll_wsprintfW]
mov eax, dword [ebp - 0x6a0]
mov dword [esp + 4], ebx
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x6a8]
call eax
lea eax, [ebp - 0x694]
mov ebx, dword [ebp + edi*4 - 0x67c]
sub esp, 0xc
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x684]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x698]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryValueExW]
sub esp, 0x18
test eax, eax
jne 0x40583a
mov eax, dword [ebp - 0x69c]
mov dword [ebp - 0x648], ebx
mov dword [esp + 8], eax
lea eax, [ebp - 0x68e]
mov dword [esp + 4], eax
lea eax, [ebp - 0x226]
mov dword [esp], eax
call dword [sym.imp.user32.dll_wsprintfW]
xor eax, eax
nop
movzx edx, word [ebx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x405720
lea edi, [ebp - 0x42e]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], edi
mov dword [esp + 8], 0
mov dword [esp + 4], 5
mov dword [esp], 0
call dword [sym.imp.shell32.dll_SHGetFolderPathW]
sub esp, 0x14
mov dword [esp], esi
call fcn.0040dea0
mov ebx, eax
xor eax, eax
mov word [ebx - 2], ax
mov dword [esp + 4], edi
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_lstrcmpiW]
sub esp, 8
test eax, eax
je 0x4057b4
movzx eax, word [ebx]
mov word [ebp - 0x6a2], ax
test ax, ax
je 0x405898
mov eax, ebx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x4057a0
sub eax, ebx
cmp eax, 0x42
jle 0x405898
mov edi, 0x5c
mov word [ebx - 2], di
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x4057d9
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x4057d0
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [ebx + eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x4057e0
lea eax, [ebp - 0x668]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x6a0]
mov dword [esp + 4], 0x3e8
mov dword [esp], eax
call dword [sym.imp.user32.dll_InsertMenuItemW]
add dword [ebp - 0x658], 1
mov dword [ebp - 0x694], 0x208
sub esp, 0x10
cmp dword [ebp - 0x69c], 4
jne 0x405659
lea eax, [ebp - 0x668]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x6a0]
mov dword [ebp - 0x660], 0x800
mov dword [ebp - 0x664], 0x102
mov dword [esp + 4], 0x3e8
mov dword [esp], eax
call dword [sym.imp.user32.dll_InsertMenuItemW]
mov eax, dword [ebp - 0x698]
sub esp, 0x10
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, 0x5c
mov word [ebx - 2], cx
cmp ebx, esi
jbe 0x405905
xor edi, edi
mov eax, esi
jmp 0x4058bd
cmp dx, 0x2f
je 0x4058c6
add eax, 2
cmp ebx, eax
jbe 0x4058fd
movzx edx, word [eax]
cmp dx, 0x5c
jne 0x4058b0
mov edx, eax
sub edx, esi
sar edx, 1
mov ecx, edx
test edi, edi
jne 0x40593d
cmp word [ebp - 0x6a2], 0
je 0x4058ef
mov ecx, ebx
nop
add ecx, 2
cmp word [ecx], 0
jne 0x4058e0
sub ecx, ebx
sar ecx, 1
add ecx, edx
cmp ecx, 0x21
jg 0x405905
mov edi, eax
add eax, 2
cmp ebx, eax
ja 0x4058bd
cmp edi, ebx
je 0x4057bd
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x405921
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x405918
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [esi + eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x405928
jmp 0x4057f0
cmp word [ebp - 0x6a2], 0
je 0x40595f
mov ecx, ebx
lea esi, [esi]
add ecx, 2
cmp word [ecx], 0
jne 0x405950
sub ecx, ebx
sar ecx, 1
add ecx, edx
cmp ecx, 0x21
jg 0x4058fd
mov edi, ebx
xor ecx, ecx
cmp ebx, eax
jb 0x405905
mov dword [ebp - 0x6ac], edx
jmp 0x405985
cmp dx, 0x2f
je 0x40598e
sub edi, 2
cmp edi, eax
jb 0x4059c1
movzx edx, word [edi]
cmp dx, 0x5c
jne 0x405978
cmp word [ebp - 0x6a2], 0
je 0x405a7d
mov edx, ebx
nop
add edx, 2
cmp word [edx], 0
jne 0x4059a0
sub edx, ebx
sar edx, 1
add edx, dword [ebp - 0x6ac]
lea edx, [ebx + edx*2]
sub edx, edi
cmp edx, 0x42
jg 0x4059c1
mov ecx, edi
jmp 0x40597e
cmp ebx, eax
je 0x4057bd
test ecx, ecx
je 0x405905
cmp eax, ecx
je 0x405905
xor edx, edx
cmp word [ebp - 0x226], 0
mov word [eax + 2], dx
lea edx, [ebp - 0x226]
je 0x4059f9
nop
add edx, 2
cmp word [edx], 0
jne 0x4059f0
xor eax, eax
lea esi, [esi]
nop
movzx ebx, word [esi + eax]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x405a00
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x405a29
add edx, 2
cmp word [edx], 0
jne 0x405a20
xor eax, eax
lea esi, [esi]
nop
movzx ebx, word [eax + 0x411520]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x405a30
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x405a61
lea esi, [esi]
nop
add edx, 2
cmp word [edx], 0
jne 0x405a58
xor eax, eax
lea esi, [esi]
nop
movzx ebx, word [ecx + eax]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x405a68
jmp 0x4057f0
mov edx, dword [ebp - 0x6ac]
jmp 0x4059b3