Function at 0x4084d0
Capabilities:
Check if file exists
Get file attributes
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xfcc
push ebx
push esi
push edi
mov dword [ebp - 0x7b0], 0
lea edx, [ebp - 0x778]
mov ecx, 0x324
xor eax, eax
push edi
mov edi, edx
rep stosb byte es:[edi], al
pop edi
mov eax, edx
or dword [ebp - 0x774], 0xffffffff
or dword [ebp - 0x770], 0xffffffff
or dword [ebp - 0x76c], 0xffffffff
or dword [ebp - 0x768], 0xffffffff
push 0x43f3b0
push 0x200
lea eax, [ebp - 0xfc0]
push eax
push 0
push 0
push str.recent_files
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [ebp - 0xfc0]
mov eax, 0xfffffffe
add eax, 2
cmp word [edx + eax], 0
jne 0x408542
shr eax, 1
test eax, eax
je 0x408abb
push 0x1776
mov eax, dword [0x440448]
push eax
call fcn.0040dbe0
push eax
mov eax, dword [0x440448]
push eax
call dword [sym.imp.USER32.dll_GetSubMenu]
mov dword [ebp - 0xfc4], eax
push 0x178d
mov eax, dword [ebp - 0xfc4]
push eax
call fcn.0040dbe0
push eax
mov eax, dword [ebp - 0xfc4]
push eax
call dword [sym.imp.USER32.dll_GetSubMenu]
mov dword [ebp - 0x44], eax
push eax
call dword [sym.imp.USER32.dll_GetMenuItemCount]
mov dword [ebp - 0xfc8], eax
dec eax
mov dword [ebp - 0xfcc], eax
jmp 0x4085dd
mov eax, dword [ebp - 0xfcc]
push eax
mov eax, dword [ebp - 0x44]
push eax
call fcn.00411210
push 0x400
mov eax, dword [ebp - 0xfcc]
push eax
mov eax, dword [ebp - 0x44]
push eax
call dword [sym.imp.USER32.dll_DeleteMenu]
dec dword [ebp - 0xfcc]
cmp dword [ebp - 0xfcc], 0
jge 0x4085b1
mov dword [0x42c010], 0
mov dword [0x42c014], 0
xor ebx, ebx
mov dword [ebx*4 + 0x43bf30], 0
inc ebx
cmp ebx, 0x10
jl 0x4085fc
mov eax, dword [0x43bf2c]
test eax, eax
je 0x40862f
push eax
push 0
mov eax, dword [0x44019c]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [0x43bf2c], 0
lea esi, [ebp - 0xfc0]
cmp word [esi], 0
je 0x40879e
jmp 0x408789
mov ax, word [esi]
test ax, ax
je 0x40877e
cmp ax, 0x7c90
je 0x40877e
push 0x43f3b0
push 0x104
lea eax, [ebp - 0x454]
push eax
push 0
push esi
push str.recent_files
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edi, [ebp - 0x454]
xor ebx, ebx
jmp 0x408691
mov eax, edi
add edi, 2
mov ax, word [eax]
mov word [ebp + ebx*2 - 0x40], ax
inc ebx
cmp word [edi], 0x5e
jne 0x408683
mov word [ebp + ebx*2 - 0x40], 0
push str.00_00_00_00_00_00
lea eax, [ebp - 0x40]
push eax
call fcn.0041e7c0
add esp, 8
test eax, eax
jne 0x4086d8
inc dword [0x42c010]
push 0xa
push 0
push esi
call fcn.0041fa40
add esp, 0xc
mov edx, dword [0x42c010]
mov dword [edx*4 + 0x43bf2c], eax
jmp 0x40877e
cmp dword [0x43bef4], 0
je 0x408718
push str.xx_xx_xx_xx_xx_xx
lea eax, [ebp - 0x40]
push eax
call fcn.0041e7c0
add esp, 8
test eax, eax
jne 0x408718
inc dword [0x42c010]
push 0xa
push 0
push esi
call fcn.0041fa40
add esp, 0xc
mov edx, dword [0x42c010]
mov dword [edx*4 + 0x43bf2c], eax
jmp 0x40877e
inc dword [0x42c014]
cmp dword [0x42c014], 1
jne 0x40873e
push 4
push 8
mov eax, dword [0x44019c]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [0x43bf2c], eax
jmp 0x408761
mov eax, dword [0x42c014]
add eax, eax
add eax, eax
push eax
mov eax, dword [0x43bf2c]
push eax
push 8
mov eax, dword [0x44019c]
push eax
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov dword [0x43bf2c], eax
push 0xa
push 0
push esi
call fcn.0041fa40
add esp, 0xc
mov edx, dword [0x42c014]
mov ecx, dword [0x43bf2c]
mov dword [ecx + edx*4 - 4], eax
mov eax, esi
add esi, 2
cmp word [eax], 0
jne 0x40877e
cmp word [esi], 0
jne 0x408644
cmp word [esi - 2], 0
jne 0x408644
lea edx, [ebp - 0x7a8]
mov ecx, 0x30
xor eax, eax
push edi
mov edi, edx
rep stosb byte es:[edi], al
pop edi
mov eax, edx
mov dword [ebp - 0x7a8], 0x30
mov dword [ebp - 0x7a4], 0x42
mov eax, dword [0x42c010]
mov dword [ebp - 0x7b0], eax
lea esi, [ebp - 0xfc0]
cmp word [esi], 0
je 0x408abb
jmp 0x408aa6
mov ax, word [esi]
test ax, ax
je 0x408a9b
cmp ax, 0x7c90
je 0x408a9b
push 0x43f3b0
push 0x104
lea eax, [ebp - 0x454]
push eax
push 0
push esi
push str.recent_files
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edi, [ebp - 0x454]
xor ebx, ebx
jmp 0x408834
mov eax, edi
add edi, 2
mov ax, word [eax]
mov word [ebp + ebx*2 - 0x40], ax
inc ebx
cmp word [edi], 0x5e
jne 0x408826
mov word [ebp + ebx*2 - 0x40], 0
add edi, 2
push str.00_00_00_00_00_00
lea eax, [ebp - 0x40]
push eax
call fcn.0041e7c0
add esp, 8
test eax, eax
je 0x40887f
cmp dword [0x43bef4], 0
je 0x408a9b
push str.xx_xx_xx_xx_xx_xx
lea eax, [ebp - 0x40]
push eax
call fcn.0041e7c0
add esp, 8
test eax, eax
jne 0x408a9b
cmp dword [0x43bef4], 0
je 0x40890a
mov ax, word [edi]
cmp word [0x43bb24], ax
je 0x40890a
push str.xx_xx_xx_xx_xx_xx
lea eax, [ebp - 0x40]
push eax
call fcn.0041e7c0
add esp, 8
test eax, eax
jne 0x40890a
mov ax, word [0x43bb24]
mov word [edi], ax
lea ecx, [ebp - 0xbc0]
mov edx, str.xx_xx_xx_xx_xx_xx
push ecx
sub ecx, edx
mov ax, word [edx]
mov word [ecx + edx], ax
add edx, 2
test ax, ax
jne 0x4088c4
pop eax
push 0x427e86
lea eax, [ebp - 0xbc0]
push eax
call fcn.0041e5f0
add esp, 8
push edi
lea eax, [ebp - 0xbc0]
push eax
call fcn.0041e5f0
add esp, 8
push 0x43f3b0
push edi
push esi
push str.recent_files
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4089bc
push 0x43f3b0
push 0
push esi
push str.recent_files
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
dec dword [0x42c010]
push 0xa
push 0
push esi
call fcn.0041fa40
add esp, 0xc
mov dword [ebp - 0x7ac], eax
xor ebx, ebx
mov eax, dword [ebp - 0x7ac]
cmp dword [ebx*4 + 0x43bf30], eax
jne 0x4089b1
cmp ebx, 0xf
jne 0x40896e
mov dword [ebx*4 + 0x43bf30], 0
jmp 0x408a9b
mov dword [ebp - 0xfcc], ebx
jmp 0x4089a3
mov eax, dword [ebp - 0xfcc]
add eax, eax
add eax, eax
mov edx, dword [eax + 0x43bf34]
mov dword [eax + 0x43bf30], edx
mov eax, dword [ebp - 0xfcc]
mov dword [eax*4 + 0x43bf34], 0
inc dword [ebp - 0xfcc]
cmp dword [ebp - 0xfcc], 0xf
jl 0x408976
jmp 0x408a9b
inc ebx
cmp ebx, 0x10
jl 0x40894a
jmp 0x408a9b
push 0xa
lea eax, [ebp - 0xbc0]
push eax
mov eax, dword [ebp - 0x7b0]
push eax
call fcn.0041e700
add esp, 0xc
cmp dword [ebp - 0x7b0], 0xa
jge 0x4089f3
push 0x427dea
lea eax, [ebp - 0xbc0]
push eax
call fcn.0041e5f0
add esp, 8
jmp 0x408a07
push 0x427de2
lea eax, [ebp - 0xbc0]
push eax
call fcn.0041e5f0
add esp, 8
push edi
lea eax, [ebp - 0xbc0]
push eax
call fcn.0041e5f0
add esp, 8
mov eax, dword [ebp - 0x7b0]
add eax, 0x3e80
mov dword [ebp - 0x798], eax
lea eax, [ebp - 0xbc0]
mov dword [ebp - 0x784], eax
mov eax, dword [ebp - 0x798]
mov dword [ebp - 0x778], eax
lea ecx, [ebp - 0x75c]
lea edx, [ebp - 0xbc0]
push ecx
sub ecx, edx
mov ax, word [edx]
mov word [ecx + edx], ax
add edx, 2
test ax, ax
jne 0x408a4f
pop eax
lea eax, [ebp - 0x7a8]
push eax
push 1
push 0
mov eax, dword [ebp - 0x44]
push eax
call dword [sym.imp.USER32.dll_InsertMenuItemW]
mov eax, dword [ebp - 0x778]
push eax
mov eax, dword [ebp - 0x44]
push eax
call fcn.0040dbe0
push eax
mov eax, dword [ebp - 0x44]
push eax
lea eax, [ebp - 0x778]
push eax
call fcn.00411170
dec dword [ebp - 0x7b0]
mov eax, esi
add esi, 2
cmp word [eax], 0
jne 0x408a9b
cmp word [esi], 0
jne 0x4087e7
cmp word [esi - 2], 0
jne 0x4087e7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret