Function at 0x402cb0
Capabilities:
Get common file path
Read .ini file

Disassembly:
sub esp, 0x22c
push esi
push edi
xor esi, esi
push esi
call fcn.00402c60
add esp, 4
inc esi
cmp esi, 0x22
jl 0x402cba
mov edx, 0x40d03c
mov ecx, 0x40
xor eax, eax
lea edi, [edx - 0x104]
rep stosd dword es:[edi], eax
mov edi, edx
add edx, 0x208
mov ecx, 0x40
cmp edx, 0x40e48c
rep stosd dword es:[edi], eax
jl 0x402cce
mov ecx, 0x40
lea edi, [esp + 0x30]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x30]
push 0x100
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x402efe
mov cl, byte [esp + eax + 0x2f]
push ebx
cmp cl, 0x5c
push ebp
je 0x402d50
mov edi, 0x40c574
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x38]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00402b90
test eax, eax
jne 0x402d66
lea eax, [esp + 0x38]
push eax
call fcn.00402b30
add esp, 4
push str.C:Program_Filesdit.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, 0x208
mov dword [esp + 0x14], eax
mov ebx, 1
mov dword [esp + 0x10], edi
test eax, eax
je 0x402dc8
lea ecx, [ebx + 0xa]
and ecx, 0xffff
push ecx
push eax
call dword [sym.imp.USER32.dll_LoadIconA]
test eax, eax
je 0x402dc8
push eax
call dword [sym.imp.USER32.dll_DestroyIcon]
mov ebp, dword [sym.imp.USER32.dll_wsprintfA]
lea esi, [edi + 0x40d03c]
push ebx
push str.C:Program_Filesdit.dll
lea edx, [esi - 0x104]
push str._s__d
push edx
call ebp
add esp, 0x10
jmp 0x402def
lea esi, [edi + 0x40d03c]
lea eax, [esp + 0x38]
push ebx
push eax
lea ecx, [esi - 0x104]
push str._sCustIco_d.ico
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
mov ebp, dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push ebx
lea edx, [esp + 0x1c]
push 0x40c558
push edx
call ebp
add esp, 0xc
lea eax, [esp + 0x138]
lea ecx, [esp + 0x18]
push 0x417d18
push 0x104
push eax
push 0x40c53c
push ecx
push str.TEXT
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [esp + 0x138]
push edx
push 0x40c53c
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x402e51
lea eax, [esp + 0x138]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x402ed6
lea ecx, [esp + 0x38]
push ebx
push ecx
push str._sCustTxt_d.Txt
push esi
call ebp
push 0x40c514
push esi
call fcn.004036c4
mov ebp, eax
add esp, 0x18
test ebp, ebp
je 0x402ed6
push ebp
mov ecx, 0x40
xor eax, eax
mov edi, esi
push 0x20
push 1
rep stosd dword es:[edi], eax
push esi
call fcn.0040370b
add esp, 0x10
cmp eax, 2
jle 0x402ec9
mov edx, dword [esp + 0x10]
mov cl, byte [edx + eax + 0x40d03b]
cmp cl, 0xd
je 0x402ea6
cmp cl, 0xa
jne 0x402eae
mov byte [edx + eax + 0x40d03b], 0
mov cl, byte [edx + eax + 0x40d03a]
lea eax, [edx + eax + 0x40d03a]
cmp cl, 0xd
je 0x402ec6
cmp cl, 0xa
jne 0x402ec9
mov byte [eax], 0
push ebp
call fcn.00403638
mov edi, dword [esp + 0x14]
add esp, 4
mov eax, dword [esp + 0x14]
add edi, 0x208
inc ebx
cmp edi, 0x1450
mov dword [esp + 0x10], edi
jl 0x402d83
pop ebp
pop ebx
test eax, eax
je 0x402efe
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call fcn.00401b70
pop edi
cmp al, 0x10
pop esi
je 0x402f30
call fcn.00401b70
cmp al, 0x11
je 0x402f30
call fcn.00401b70
cmp al, 0x20
je 0x402f24
call fcn.00401b70
cmp al, 0x21
jne 0x402f35
call fcn.004029b0
add esp, 0x22c
ret
call fcn.00402040
add esp, 0x22c
ret