Function at 0x40e180
Capabilities:
Get file attributes
Manipulate boot configuration
Read .ini file
Set file attributes

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2058
call fcn.00421190
mov dword [ebp - 0x2054], ecx
call fcn.0040f580
test eax, eax
je 0x40e480
mov dword [ebp - 8], str.C:BOOT.INI
mov dword [ebp - 4], str.Operating_Systems
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x1014], eax
mov ecx, dword [ebp - 0x1014]
mov dword [ebp - 0x1018], ecx
mov edx, dword [ebp - 0x1018]
and edx, 0xfffffff8
mov dword [ebp - 0x1018], edx
mov eax, dword [ebp - 0x1018]
or eax, 0x80
mov dword [ebp - 0x1018], eax
mov ecx, dword [ebp - 0x1014]
cmp ecx, dword [ebp - 0x1018]
je 0x40e209
mov edx, dword [ebp - 0x1018]
push edx
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov ecx, dword [ebp - 8]
push ecx
push 0x800
lea edx, [ebp - 0x1010]
push edx
push 0x42aee4
push 0
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0x1010]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
movsx eax, byte [edx]
test eax, eax
je 0x40e45c
push 6
push str.multi_
mov ecx, dword [ebp - 0xc]
push ecx
call fcn.004282f7
add esp, 0xc
test eax, eax
jne 0x40e441
mov edx, dword [ebp - 8]
push edx
push 0x800
lea eax, [ebp - 0x810]
push eax
push 0x42aef0
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
movsx eax, byte [ebp - 0x810]
test eax, eax
je 0x40e441
mov dword [ebp - 0x101c], str._noguiboot
mov dword [ebp - 0x1020], str._fastdetect
cmp dword [ebp + 8], 0
je 0x40e356
lea ecx, [ebp - 0x810]
push ecx
lea edx, [ebp - 0x1828]
push edx
call fcn.0041e1b0
add esp, 8
mov eax, dword [ebp - 0x101c]
push eax
lea ecx, [ebp - 0x1828]
push ecx
call fcn.00420d20
add esp, 8
mov dword [ebp - 0x1024], eax
cmp dword [ebp - 0x1024], 0
je 0x40e2fd
mov edx, dword [ebp - 0x1020]
push edx
lea eax, [ebp - 0x1828]
push eax
call fcn.0041e1b0
add esp, 8
mov ecx, dword [ebp - 0x1020]
push ecx
lea edx, [ebp - 0x1828]
push edx
call fcn.00420d20
add esp, 8
mov dword [ebp - 0x1024], eax
cmp dword [ebp - 0x1024], 0
je 0x40e327
jmp 0x40e441
push 0x42af0c
lea eax, [ebp - 0x810]
push eax
call fcn.0041e1c0
add esp, 8
mov ecx, dword [ebp - 0x1020]
push ecx
lea edx, [ebp - 0x810]
push edx
call fcn.0041e1c0
add esp, 8
jmp 0x40e3f8
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x2030]
push ecx
call fcn.0041e1b0
add esp, 8
mov edx, dword [ebp - 0x1020]
push edx
lea eax, [ebp - 0x2030]
push eax
call fcn.00420d20
add esp, 8
mov dword [ebp - 0x182c], eax
cmp dword [ebp - 0x182c], 0
je 0x40e3a7
mov ecx, dword [ebp - 0x101c]
push ecx
lea edx, [ebp - 0x2030]
push edx
call fcn.0041e1b0
add esp, 8
mov eax, dword [ebp - 0x101c]
push eax
lea ecx, [ebp - 0x2030]
push ecx
call fcn.00420d20
add esp, 8
mov dword [ebp - 0x182c], eax
cmp dword [ebp - 0x182c], 0
je 0x40e3ce
jmp 0x40e441
push 0x42af10
lea edx, [ebp - 0x810]
push edx
call fcn.0041e1c0
add esp, 8
mov eax, dword [ebp - 0x101c]
push eax
lea ecx, [ebp - 0x810]
push ecx
call fcn.0041e1c0
add esp, 8
mov edx, dword [ebp - 8]
push edx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov eax, dword [ebp - 8]
push eax
lea ecx, [ebp - 0x810]
push ecx
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
jne 0x40e431
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x2034], eax
mov ecx, dword [ebp - 8]
push ecx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov edx, dword [ebp - 0xc]
push edx
call fcn.0041e990
add esp, 4
mov ecx, dword [ebp - 0xc]
lea edx, [ecx + eax + 1]
mov dword [ebp - 0xc], edx
jmp 0x40e233
mov eax, dword [ebp - 0x1014]
cmp eax, dword [ebp - 0x1018]
je 0x40e47b
mov ecx, dword [ebp - 0x1014]
push ecx
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
jmp 0x40e5bc
mov dword [ebp - 0x2044], str.C:MSDOS.SYS
mov dword [ebp - 0x203c], str.Options
mov dword [ebp - 0x2038], str.Logo
mov eax, dword [ebp - 0x2044]
push eax
push 1
mov ecx, dword [ebp - 0x2038]
push ecx
mov edx, dword [ebp - 0x203c]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp - 0x2040], eax
cmp dword [ebp + 8], 0
je 0x40e4d0
cmp dword [ebp - 0x2040], 0
je 0x40e4e7
cmp dword [ebp + 8], 0
jne 0x40e5bc
cmp dword [ebp - 0x2040], 1
jne 0x40e5bc
mov eax, dword [ebp - 0x2044]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x2048], eax
mov dword [ebp - 0x204c], 0x20
mov ecx, dword [ebp - 0x2048]
cmp ecx, dword [ebp - 0x204c]
je 0x40e526
mov edx, dword [ebp - 0x204c]
push edx
mov eax, dword [ebp - 0x2044]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov ecx, dword [ebp - 0x2044]
push ecx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
cmp dword [ebp + 8], 0
je 0x40e54b
mov dword [ebp - 0x2058], 0x42af34
jmp 0x40e555
mov dword [ebp - 0x2058], 0x42af38
mov edx, dword [ebp - 0x2044]
push edx
mov eax, dword [ebp - 0x2058]
push eax
mov ecx, dword [ebp - 0x2038]
push ecx
mov edx, dword [ebp - 0x203c]
push edx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
jne 0x40e587
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x2050], eax
mov eax, dword [ebp - 0x2044]
push eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov ecx, dword [ebp - 0x2048]
cmp ecx, dword [ebp - 0x204c]
je 0x40e5bc
mov edx, dword [ebp - 0x2048]
push edx
mov eax, dword [ebp - 0x2044]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
cmp dword [ebp + 8], 0
jne 0x40e5e6
mov ecx, dword [ebp - 0x2054]
add ecx, 0x184
push ecx
push 0x42af3c
push 0x42af40
mov edx, dword [0x42f060]
push edx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov eax, 1
mov esp, ebp
pop ebp
ret 4